用快速傅里叶变换对信号进行频谱分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二 用快速傅里叶变换对信号进行频谱分析
一、实验目的
1.理解离散傅里叶变换的意义;
2.掌握时域采样率的确定方法;
3.掌握频域采样点数的确定方法;
4.掌握离散频率与模拟频率之间的关系;
5.掌握离散傅里叶变换进行频谱分析时,各参数的影响。
二、实验原理
序列的傅里叶变换结果为序列的频率响应,但是序列的傅里叶变换是频率的连续函数,而且在采用计算机计算时,序列的长度不能无限长,为了便于计算机处理,作如下要求:序列x (n )为有限长,n 从0~N -1,再对频率ω在0~2π范围内等间隔采样,采样点数为N ,采样间隔为2π/N 。第k 个采样点对应的频率值为2πk /N 。可得离散傅里叶变换及其逆变换的定义为
∑-=-=1
02)()(N n n N k j e n x k X π (1)
∑-==1
02)(1)(N k k N
n j e k X N n x π (2) 如果把一个有限长序列看作是周期序列的一个周期,则离散傅里叶变换就是傅里叶级数。离散傅里叶变换也是周期的,周期为N 。
数字频率与模拟频率之间的关系为
s f f /2πω=,即s
s T f f πωπω22==
(3) 则第k 个频率点对应的模拟频率为 N
kf NT k T N k f s s s k ==⋅=ππ212 (4) 在用快速傅里叶变换进行频谱分析时,要确定两个重要参数:采样率和频域采样点数,采样率可按奈奎斯特采样定理来确定,采样点数可根据序列长度或频率分辨率△f 来确定
f N
f s ∆≤,则f f N s ∆≥ (5) 用快速傅里叶变换分析连续信号的频谱其步骤可总结如下:
(1)根据信号的最高频率,按照采样定理的要求确定合适的采样频率f s ;
(2)根据频谱分辨率的要求确定频域采样点数N ,如没有明确要求频率分辨率,则根据实际需要确定频率分辨率;
(3)进行N 点的快速傅里叶变换,最好将纵坐标根据帕塞瓦尔关系式用功率来表示,
横坐标根据式(7-21)转换为模拟频率Hz;
(4)根据所得结果进行分析。
三、实验内容
1.采样率和采样点数的确定
在本实验中要用到正弦波、矩形波和正弦调制波
正弦波:sin(20πt);
矩形波:频率为50Hz、占空比为1的矩形波;
正弦波调制波:sin(20πt)×cos(100πt)
根据上述波形确定采样频率。假定所有波形的频率分辨率均为0.5Hz,确定频域采样点数。
2.信号的频谱分析
①正弦波进行快速傅里叶变换;
②矩形波进行快速傅里叶变换;
③正弦调制波进行快速傅里叶变换;
3.分析各信号的频谱与时域波形之间的关系
四、实验步骤
1.复习并理解离散傅里叶变换的定义和物理意义;
2.编写Matlab程序对信号进行频谱分析(参看例题中的程序);
3.调试程序,排除程序中的错误;
4.分析程序运行结果,检验是否与理论一致;
5.如结果不理想,调整有关参数,得到较理想的结果。
五、实验报告要求
1.阐明实验的目的、原理和内容;
2.打印主要程序并粘贴在实验报告中;
3.打印实验结果并粘贴在实验报告中;
4.针对实验结果加以分析和总结。
六、思考题
(1)频谱的幅度有没有物理意义?如没有,怎样处理才能有物理意义?
(2)为什么所得信号的频谱均是关于中心点对称的?
(3)要让所得频谱近似为理想的冲激,该如何调整参数?
附例题
例1试对信号x(t)=2sin(30πt)-cos(32πt)+ sin(60πt)进行频谱分析。
解:信号中包含了3种频率:15Hz、16Hz和30Hz,最高频率为30Hz,所以采样率不
能低于60Hz,这里取100Hz。没有明确告诉频率分辨率,但是有两个频率仅相差1Hz,因此,频率分辨率不能低于1Hz,取0.1Hz。当然采样率越高、频率分辨率越高,则计算量就越大。程序如下:
deltf=0.1;%频率分辨率
Fs=100;%采样率
N=Fs/deltf;%采样点数
n=0:N-1;%采样点
x=2*sin(30*pi*n/Fs)-cos(32*pi*n/Fs)+sin(60*pi*n/Fs);%采样
y=fft(x);%快速傅里叶变换
ye=y.*conj(y);%计算能量
subplot(2,2,1);plot(n*Fs/N,real(y),'k');
xlabel('频率/Hz');ylabel('幅度');text(45,100,'实部');
subplot(2,2,2);plot(n*Fs/N,imag(y),'k');
xlabel('频率/Hz');ylabel('幅度');
axis([0 100 -1500 1500]);text(45,1200,'虚部');
subplot(2,2,3);plot(n*Fs/N,ye,'k');
xlabel('频率/Hz');ylabel('幅度');
axis([0 100 0 12e5]);text(45,10e5,'能量');
subplot(2,2,4);plot(n*Fs/N,ye/N^2,'k');
xlabel('频率/Hz');ylabel('幅度');
axis([0 100 0 1.5]);text(45,1.2,'功率');