求教matlab实现门函数的fft

r(t)=1(-0.5<=t<=0.5)这种的门函数在mmatlab里有直接的函数表示吗?
题目是对r(t)进行采样,从-0.5开始,间隔0.05,一共采样20个点,然后进行fft
门函数的fft不应该是sinc函数吗?为什么我的程序结果一支不对?
下面是我编写的门函数
n=0:20;
delta=0.05;
t=-0.5+delta*n;
x=1+t-t;
y=fft(x);
yy=abs(y);
还写了一种这样的
g=[(t>-0.5)&(t<0.5)];
y=fft(g);
yy=abs(y);
出来后的结果都不是sinc函数,请教是什么问题?

        如果你只对[-0.5,0.5]之间的信号进行采样,那么你采的将会是常数1,这样做出的FFT应该是一个delta函数,也就是一个冲击,所以你应该采包括外边的值才能够反映出信号的特性。

        这样结果没有任何问题,问题是你采样的值太少了,换句话说就是你采样的信号反映不出这是个门函数的特性来。

       

        matlab里边是可以利用单边函数表示门函数的。你可以跑一下下边的程序,看一下门函数:

        fx=heaviside(x+0.5)-heaviside(x-0.5);

        ezplot(fx,[-1,1]);




        而且matlab里边还有对符号表达式做傅里叶变换的函数fourier(),用法如下:

        FX=fourier(fx);

        ezplot(FX,[-30,30]);

        title('fourier transformation of fx')



而如果你非想用fft做,就必须加大采样点数,尤其是门之外的部分,才能够完整的描述信号。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-11
不知道