创新学分实验4

上传人:pu****.1 文档编号:486140042 上传时间:2023-03-19 格式:DOCX 页数:8 大小:42.15KB
返回 下载 相关 举报
创新学分实验4_第1页
第1页 / 共8页
创新学分实验4_第2页
第2页 / 共8页
创新学分实验4_第3页
第3页 / 共8页
创新学分实验4_第4页
第4页 / 共8页
创新学分实验4_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《创新学分实验4》由会员分享,可在线阅读,更多相关《创新学分实验4(8页珍藏版)》请在金锄头文库上搜索。

1、离散非周期信号频谱分析的MATLAB算法实现1引言在上一章中介绍了四种不同类型信号的频谱变化规律,在这一章将具体研究 其中的一种,即离散非周期信号。在从理论上掌握其频谱变化规律的基础上,着 重讨论如何应用离散傅里叶变换DFT对其频谱进行分析,针对具体实例,通过 MATLAB编程采用FFT算法实现对其频谱的计算,并和理论值比较,作了相应 的误差分析。2频域采样定理如前所述,依据以下关系式所构成的一对离散时间傅里叶变换DTFT,即x(n) =P71 X (Q )ejQndQX (0) = x(n)e -jnn2兀on = 0可知离散非周期信号的频谱是周期连续的频谱。由于频谱是连续的,尚须对 其作离

2、散化处理(即采样)后才能利用DFT进行分析。对采样过程而言,如果 不能恰当地确定采样间隔或采样点数,势必产生混叠误差。例如,在频域欠取样 情况下,由于出现时域信号波形混叠,也就无法恢复原信号,因而无法从频域样 点重建原离散频谱,以至在严重情况下会得到错误的计算结果。采样定理为采样后能否恢复原信号提供了理论依据。对于离散非周期信号的频谱分析,我们需要用到频域采样定理,即:如果序列x(n)的长度为M,则只有当频域采样点数NM时,才可以由频域 采样X (k)恢复原序列x(n),否则产生时域混叠现象。3实现方法与求解步骤利用FFT和IFFT分析离散非周期信号(序列)的频谱,要视序列的长度选 择适当的方

3、法:(1)当序列长度有限时,在正确选取M、N的条件下(即使得NM)可以求得准确的频谱样值。(2)若序列很长或无限长,必须先根据能量分布在满足实际工程计算允许 的范围内进行截断处理,从而选取适当的M、N以求解频谱样值。由于截断必 然产生泄露误差以及混叠误差,所以使得计算的结果只能是频谱样值的近似值。已知N点有限序列x(n)的频谱为:X (Q.)=为 x (n) e -j n nn = 0若序列很长,需要把它截断为M点,则其近似频谱为:M-1X (Q) a 乙 x (n) e -jG nn = 0为了实现计算机数字分析,在数字域将数字频率G = kG = k红进行离散0 N化,求得其近似的频谱样值

4、为:an = 0-j knN=DFT x (n) = X (k)综上,总结对离散非周期信号(序列)频谱分析的一般求解步骤为:(1) 确定原序列X(n)的长度M。根据能量分布,序列为无限长时需要进 行截断。(2) 确定作FFT的点数N。根据频域取样定理,为使时域波形不产生混叠, 必须取N M。(3) 使用fft命令作N点FFT计算X (k)。频率分辨率g =込。0 N(4) 绘制频谱图,使运算结果可视化。4实例分析及MATLAB编程例已知无限长序列X( n)=0.8 nu (n)。(1) 截取序列长度M=10点,用FFT计算其频谱,并与理论计算的结果进行 比较,观察功率泄漏现象。(2) 截取序列

5、长度M=20点,用FFT计算其频谱,观测功率泄漏情况并与(1) 进行比较。懈该序列总能量 E = X x2n = = 2.77781 0.64相关MATLAB运算指令:E=1/(1-0.64)2.7778(1) M=10点截断的信号的能量E仝x2n=上(0.64)101 0.64 n = 0占总能量的比例通过以下MATALB指令计算:p10=(1-(064) A10)/(1-0 64)/Ep10 =0.9885即10点截断的信号能量占原始信号总能量的98.85%,占了大部分,有少部分泄漏。编写以下MATLAB程序观察N=M=10点时的功率泄漏现象:N=10;n=0:N-1;x=(08)人口;X

6、=fft(x,N); subplot(2,1,1); stem(n,x); ylabel(xn);xlabel(Time n);omega=2*pi/N*n;X0=1/(1-0 8*exp(-j*omega);subplot(2,1,2);plot(omega,abs(X),omega,abs(X0),ylabel(X(omega);xlabel(Frequency(rad);运行程序,结果显示如图4.1。10.80.60.40.20012345Time n67890o123Frequency(rad)456Daemov图4.1 M=10点时的时域信号和DFT计算出的频谱(2) M=20点截断

7、的信号的能量e二丈x2n = 1 (0-64)21 - 0.64n = 占总能量的比例由以下MATLAB指令计算:p20=(1-(064)人20)/(1-0 64)/Ep20=0.9999即2点截断的信号能量占原始信号总能量的99.99%,只有0.01%的泄漏。编写以下MATLAB程序观察N=M=20点时的功率泄漏现象:N=20;n=0:N-1;x=(0 8)入n;X=fft(x,N);subplot(2,1,1);stem(n,x);ylabel(xn); xlabel(Time n);omega=2*pi/N*n;X0=1/(1-0 8*exp(-j*omega);subplot(2,1,

8、2);plot(omega,abs(X),omega,abs(X0), ylabel(X(omega);xlabel(Frequency(rad);6 5 4 3 2 aaem oX10.80.60.40.2002468101214Time n16 18 20运行程序,结果显示如图4.2。234Freque ncy(rad)4. 2 M=20点时的时域信号和DFT计算出的频谱其中,上图为截短后的时间序列,下图中实线为截短的时间序列的幅频特性, 虚线为原序列的幅频特性。可见,增大M的取值后,再用FFT计算其频谱,泄 露就会明显的减少,得到的谱也近似其真实谱。5误差分析DFT解决了用计算机对离散非

9、周期信号进行分析的问题,但由于对频域是 连续函数的信号需要离散化,对长度或频谱很宽或无限长的信号需要做截断处 理,因此如果不能恰当地确定取样间隔T,势必产生混叠误差。如果截断和选取 的长度N不合适,则会造成频谱扩散,使能量和功率产生泄露,产生泄漏误差。 截断长度越短,泄漏误差也越大。为此,如何通过正确的确定T与N来减少这两 种误差,实现高效计算有着极其重要的实际意义。刚才我们从图4.1和图4.2中已经看出,时域截断对应FFT计算的频谱幅度应小 与真实幅度谱,同时由于矩形窗函数对x (n)突然截断,使FFT计算的谱向高 频处扩展产生了功率泄露。为了减少能量扩散,增大M的取值后,再用FFT计算 其频谱,泄露就会明显的减少,得到的谱也近似其真实谱。6实验心得完成本次实验后,我对于实现离散非周期信号频谱分析的MATLAB算法有了比较 全面的学习和理解,面对问题的解答我充分利用了 MATLAB的应用方法,使我对 于MATLAB的应用有了更进一步的提高。在实验过程中出现的难点和问题也顺利 解决。对于我以后的学习和工作有非常大的帮助。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号