- 3
- 0
- 约3.29千字
- 约 11页
- 2018-12-24 发布于湖北
- 举报
数字信号处理实验
信息25
2120502123
赵梦然
实验一 快速傅里叶变换与信号频谱分析
一. 实验目的
1. 在理论学习的基础上,通过本实验加深对离散傅里叶变换的理解。
2. 熟悉并掌握按时间抽取编写快速傅里叶变换(FFT)算法的程序。
3. 了解应用FFT 进行信号频谱分析过程中可能出现的问题,例如频谱混淆、
泄漏、栅栏效应等,以便在实际中正确使用FFT 算法进行信号处理。
二. 实验内容
1. 仔细分析教材第六章“时间抽取法FFT 的FORTRAN 程序”,编写出相应的
使用FFT 进行信号频谱分析的Matlab 程序。
2. 用FFT 程序分析正弦信号,分别在以下情况进行分析,并讨论所得的结果:
a) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.000625s;
b) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.005s;
c) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.0046875s;
d) 信号频率F=50Hz,采样点数N=32,采样间隔T=0.004s;
e) 信号频率F=50Hz,采样点数N=64,采样间隔T=0.000625s;
f) 信号频率F=250Hz,采样点数N=32,采样间隔T=0.005s;
g) 将c)中信号后补32 个0,做64 点FFT,并与直接采样64 个点做FFT 的
结果进行对比。
3. 思考题:
1) 在实验a)、b)、c)和d)中,正弦信号的初始相位对频谱图中的幅度特性
是否有影响?为什么?
信号补零后做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);
%进行采样
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);
end
xlabel(频率/Hz);
ylabel(振幅);
grid on;
四.实验结果
实验数据记录:
(a)
输入信号频率:50
输入采样点数:32
输入间隔时间:0.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和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.0046875s,fs=1/T=213.33Hz,基频为fs/N=6.66Hz,50/6.66=7.5。由于不是整周期,所以发生泄漏。同样可以用sinc函数加以解释:即除了主瓣上有取值之外还在非
原创力文档

文档评论(0)