- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验1 利用DFT分析信号频谱
一、实验目的
1.加深对DFT原理的理解。
2.应用DFT分析信号的频谱。
3.深刻理解利用DFT分析信号频谱的原理,分析实现过程中出现的现象及解决方法。
二、实验设备与环境
计算机、MATLAB软件环境
三、实验基础理论
1.DFT与DTFT的关系
有限长序列x(n)(0≤n≤N-1)的离散时间傅里叶变换X(ejω)在频率区间(0≤ω≤2π)的N个等间隔分布的点kω=2πk/N(0≤k≤N-1)上的N个取样值可以由下式表示:
由上式可知,序列x(n)的N点DFT Xk,实际上就是x(n)序列的DTFT在N个等间隔频率点kω=2πk/N(0≤k≤N-1)上样本Xk。
2.利用DFT求DTFT
方法1:由恢复出的方法如下:
由图2.1所示流程可知:
由上式可以得到:
其中为内插函数
方法2:实际在MATLAB计算中,上述插值运算不见得是最好的办法。由于DFT是DTFT的取样值,其相邻两个频率样本点的间距为2π/N,所以如果我们增加数据的长度N,使得到的DFT谱线就更加精细,其包络就越接近DTFT的结果,这样就可以利用DFT计算DTFT。如果没有更多的数据,可以通过补零来增加数据长度。
3.利用DFT分析连续信号的频谱
采用计算机分析连续时间信号的频谱,第一步就是把连续信号离散化,这里需要进行两个操作:一是采样,二是截断。
对于连续时间非周期信号,按采样间隔T进行采样,阶段长度M,那么:
对进行N点频域采样,得到
因此,可以将利用DFT分析连续非周期信号频谱的步骤归纳如下:
(1)确定时域采样间隔T,得到离散序列
(2)确定截取长度M,得到M点离散序列,这里为窗函数。
(3)确定频域采样点数N,要求N≥M。
(4)利用FFT计算离散序列的N点DFT,得到.
(5)根据上式由计算采样点的近似值。
采用上述方法计算信号的频谱需要注意如下三个问题:
(1)频谱混叠。如果不满足采样定理的条件,频谱会出现混叠误差。对于频谱无限宽的信号,应考虑覆盖大部分主要频率分量的范围。
(2)栅栏效应和频谱分辨率。使用DFT计算频谱,得到的结果只是N个频谱样本值,样本值之间的频谱是未知的,像通过一个栅栏观察频谱,称为“栅栏效应”。频谱分辨率与记录长度成反比,要提高频谱分辨率,就要增加记录时间。
(3)频谱泄露。对信号截断会把窗函数的频谱引入信号频谱,造成频谱泄露。解决这个问题的主要办法是采用旁瓣小的窗函数,频谱泄露和窗函数均会引起误差。
因此,要合理选取采样间隔和截取长度,必要时还需考虑加适当的窗。
对于连续时间周期信号,我们在采用计算机进行计算时,也总是要进行截断,序列总是有限长的,仍然可以采用上述方法近似计算。
4.可能用到的MATLAB函数与代码
实验中DFT运算可采用MATLAB中提供的函数fft来实现。
DTFT可采用MATLAB矩阵运算的方法进行计算,如下式所示:
四、实验内容
1、已知,完成如下要求:
(1)计算其DTFT,并画出区间的波形。
(2)计算4点DFT,并把结果显示在(1)所画的图形中。
(3)对x(n)补零,计算64点DFT,并显示结果。
(4) 根据实验结果,分析是否可以由DFT计算DTFT,如果可以,如何实现。
解:(1)计算其DTFT,并画出区间的波形。
n=0:3;
x=[2 -1 1 1];
w=-pi:0.01*pi:pi;
X=x*exp(-j*n*w);
subplot(211);
plot(w,abs(X));
xlabel(\Omega/\pi);
title(Magnitude);
axis tight;
subplot(212);
plot(w,angle(X)/pi);
xlabel(\Omega/\pi);
title(Phase);
axis tight;
(2)计算4点DFT,并把结果显示在(1)所画的图形中。
Xk=fft(x);
subplot(211);
hold on;
stem(n,abs(Xk),filled);
plot(w,abs(X));
axis tight;
xlabel(\Omega/\pi);
title(Magnitude);
subplot(212);
hold on;
plot(w,angle(X)/pi);
stem(n,angle(Xk),filled);
axis tight;
xlabel(\Omega/\pi);
title(Phase);
运行结果如下:
(3)对x(n)补零,计算64点DFT,并显示结果。
x=[2 -1 1 1 zeros(1,60)];
n=0:63;
Xk=fft(x
文档评论(0)