tjucruiser 发表于 2010-11-19 15:23

FFT对信号补零与不补零的疑问

第一个例子:
       N= 15;
       w1= window(@rectwin,N);
       Out1=abs(fftshift(fft(w1,256)));%256点FFT,相当于补零256-15点
       plot(Out1);
这样可以得到很漂亮的频谱,和教科书上的一样
如果不补零,如下
       N= 256;%或者N=15
       w1= window(@rectwin,N);
       Out1=abs(fftshift(fft(w1,N)));%
       plot(Out1);
得到的谱线很难看,不会出现教科书上那样的谱线

第二个例子,信号x10由长度为L的余弦信号部分,以及6000-L个零组成,比如L=200,可以得到很好的谱图。如下:
L=200;%L=200;%改变L的大小分别为10,20,40,100
f1=2000;
f2=2500;
f3=3000;
fs=10000;
t=0:1/fs:0.6-1/fs;
xt=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t);
len=length(xt);
zerow=zeros(1,len-L);
xt10=;
figure('name','加方窗的时间信号'),plot(t,xt10);%不加窗等于加方窗
ft10=fft(xt10);
figure('name','加方窗的频谱'),plot(abs(fftshift(ft10)));
n=0:length(xt10)-1;
wn=0.54-0.46*cos(2*pi*n/(L-1));
xtw10=xt10.*wn;
%xtw10=;
figure('name','加海明窗的时间信号'),plot(t,xtw10);
ftw10=fft(xtw10);
figure('name','加海明窗的频谱'),plot(abs(fftshift(ftw10)));

但是如果L=6000,即不补零,如果不补零,那么我无法比较不同的窗对信号频谱的影响,因为得到的结果都一样了。

songzy41 发表于 2010-11-19 15:23

主要是想解决或了解什么,目的不一样,手段当然也是不一样的。LZ想要比较矩形窗和海明窗的差别。而在程序中信号的频率都和谱线相重合,两种窗的旁瓣正因为信号的频率和谱线相重合,各旁瓣都在栅栏效应栅栏的空挡内,看不到,无法观察到矩形窗的旁瓣与海明窗的旁瓣是完全不同的,以及矩形窗的旁瓣影响的严重性。为了能了解这些特性,就应该补零,补零后使栅栏效应各栅栏加密,能显示出旁瓣影响。

峰之巅 发表于 2010-11-21 20:48

楼主想问什么?

tjucruiser 发表于 2010-11-23 16:46

多谢楼上的
页: [1]
查看完整版本: FFT对信号补零与不补零的疑问