1、数字信号处理上机实验1数字信号处理实验 信息252120502123赵梦然实验一 快速傅里叶变换与信号频谱分析一 实验目的1. 在理论学习的基础上,通过本实验加深对离散傅里叶变换的理解。2. 熟悉并掌握按时间抽取编写快速傅里叶变换(FFT)算法的程序。3. 了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如频谱混淆、泄漏、栅栏效应等,以便在实际中正确使用FFT 算法进行信号处理。二 实验内容1. 仔细分析教材第六章“时间抽取法FFT 的FORTRAN 程序”,编写出相应的使用FFT 进行信号频谱分析的Matlab 程序。2. 用FFT 程序分析正弦信号,分别在以下情况进行分析,并讨论所
2、得的结果:a) 信号频率F50Hz,采样点数N=32,采样间隔T=0.000625s;b) 信号频率F50Hz,采样点数N=32,采样间隔T=0.005s;c) 信号频率F50Hz,采样点数N=32,采样间隔T=0.0046875s;d) 信号频率F50Hz,采样点数N=32,采样间隔T=0.004s;e) 信号频率F50Hz,采样点数N=64,采样间隔T=0.000625s;f) 信号频率F250Hz,采样点数N=32,采样间隔T=0.005s;g) 将c)中信号后补32 个0,做64 点FFT,并与直接采样64 个点做FFT 的结果进行对比。3. 思考题:1) 在实验a)、b)、c)和d)
3、中,正弦信号的初始相位对频谱图中的幅度特性是否有影响?为什么?信号补零后做FFT 是否可以提高信号频谱的分辨率?为什么?三实验程序function pushbutton1_Callback(hObject, eventdata, handles)F=str2double(get(handles.f,string);N=str2double(get(handles.n,string);T=str2double(get(handles.t,string);fai=str2double(get(handles.fai,string);zero=get(handles.zero,value);%进行采
4、样t=0:T:(N-1)*T;x=cos(2*pi*F*t+fai);%进行fft运算if zero y=abs(fft(x,N+32); y=y/max(y);else y=abs(fft(x); y=y/max(y);end %画图axes(handles.axes2);stem(0:N-1),x,*); axes(handles.axes1);if zero stem(0:N+31),y,.);else stem(0:N-1),y);endxlabel(频率/Hz);ylabel(振幅);grid on;四实验结果实验数据记录:(a)输入信号频率:50输入采样点数:32输入间隔时间:0.
5、000625是否增加零点?否信号频率F=50Hz,采样长N=32,采样周期T=0.000625s,fs=1/T=1600Hz,基频为fs/N=50Hz,50/50=1.故此在频谱图上的第1个点和第31个点有值。可以用sinc函数加以解释:由于sin信号的频谱为在pi/16和-pi/16上的冲激,所以时域采样后,在频域以2*pi为周期进行周期延拖。加窗后,卷积一个sinc函数,因为采样点数为32,所以窗的宽度即为32,主瓣峰值落在主瓣中间,所以得到其主瓣的宽度为pi/16,因为进行DFT要有32个点,所以第k个点对应的频谱为(k-1)*pi/16,由上面的sinc函数的主瓣宽度知,除了pi/16
6、和31*pi/16(由于频域的周期延拖),其他的点处,sinc函数都为0,DFT的结果只有在第1个点和第31个点有大小相等的值,其它点为0.(b)输入信号频率:50输入采样点数:32输入间隔时间:0.005是否增加零点?否信号频率F=50Hz,采样长N=32,采样周期T=0.005s,fs=1/T=200Hz,基频为fs/N=6.25Hz,50/6.25=8.故此在频谱图上的第8个点和第24个点有值。同样可以用sinc函数加以解释。(和1中基本一致)(c)输入信号频率:50输入采样点数:32输入间隔时间:0.0046875是否增加零点?否信号频率F=50Hz,采样长N=32,采样周期T=0.0
7、046875s,fs=1/T=213.33Hz,基频为fs/N=6.66Hz,50/6.66=7.5。由于不是整周期,所以发生泄漏。同样可以用sinc函数加以解释:即除了主瓣上有取值之外还在非整周期处取值,导致有其他值的存在。(d)输入信号频率:50输入采样点数:32输入间隔时间:0.004是否增加零点?否信号频率F=50Hz,采样长N=32,采样周期T=0.004s,fs=1/T=250Hz,基频为fs/N=7.8125Hz,50/7.8125=6.4。由于不是整周期,所以发生泄漏。同样可以用sinc函数加以解释:即除了主瓣上有取值之外还在非整周期处取值,导致有其他值的存在。(e)输入信号频
8、率:50输入采样点数:64输入间隔时间:0.000625是否增加零点?否信号频率F=50Hz,采样长N=64,采样周期T=0.000625s,fs=1/T=1600Hz,基频为fs/N=50Hz,50/50=1.故此在频谱图上的第2个点和第62个点有值。同样可以用sinc函数加以解释。(和1中基本一致)(f)输入信号频率:250输入采样点数:32输入间隔时间:0.005是否增加零点?否产生了失真。(g)输入信号频率:50输入采样点数:64输入间隔时间:0.0046875是否增加零点?否输入信号频率:50输入采样点数:32输入间隔时间:0.0046875是否增加零点?是后面补了32个零点,做了6
9、4个点的DFT,其它部分均与(c)相同。相应的在(c)中采样的间隔是pi/16,这个题中采样的间隔是pi/32。所以在2*n点上的值与(c)对应的n点的值相同,在2*n+1点上除了在第15和第49点上有峰值外,其余点为0。和(c)直接做64点的FFT不同。五思考题1) 在实验a)、b)、c)和d)中,正弦信号的初始相位对频谱图中的幅度特性是否有影响?为什么?现在对a)、b)、c)和d)加一个初始相位为/2,得到各个图像如下a)b)c)d)由各个图像和之前图像进行对比可以得到:正弦信号的初始相位对频谱图中的幅度特性没有影响。原因主要在于采样之后进行了周期延拓,所以无论如何改变初始相位都无法改变其
10、频谱图中的幅度特性。2) 信号补零后做FFT 是否可以提高信号频谱的分辨率?为什么?信号补零后做FFT无法提高信号频谱的分辨率。连续时间信号经采样、截断后的序列为Xn(n),其频谱函数XN(ejw),并不随序列末端补零而改变,信号的频率分辨率为Fs/N.序列末端补零只能提高信号频谱显示的分辨率。换句话说,如果连续时间信号在离散化或时域加窗截断过程中,由于频谱泄漏或混叠等原因已造成信号频谱中信息的失真,则无论怎么补零做DFT,都无法再恢复已损失的信息。提高信号的频率分辨率只有提高信号的采样频率或增加序列的截断长度N(信号的持续时间加长)。数据后面补零-不能提高信号的频率分辨率序列末端补零后,尽管信号的频谱不会变化,但对序列做补零后L点DFT后,计算出的频谱实际上是原信号频谱在0,2*pi)区间上L个等间隔采样,从而增加了对真实频谱采样的点数,并改变了采样点的位置,这将会显示出原信号频谱的更多的细节。故而数据后面补零可以克服栅栏效应。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1