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