mag2=abs(Hejw_num);%计算各频点频谱的幅度 subplot(3,2,4);plot(w1,mag2*T),%绘制频谱幅度曲线 xlabel('频率(*2*pi)rad'),ylabel('幅度'),%加标签 grid,title('(d) 离散信号幅频理论值'),%加网格和标题 %序列加窗图示及频谱幅值绘制
%利用数值运算计算并绘制加窗后序列xw(n)的图形 M=8;win=(window(@rectwin,M))';%定义窗点和窗型 xwn=xn_num.*[win,zeros(1,N-M)];%给离散信号加窗 subplot(3,2,5);stem(n_num,xwn,'b.'),%加窗序列图示 xlabel('n'),ylabel('xw(n)'),%加标签
grid,title('(e) 加窗序列图形'),%加网格和标题 %利用符号运算和数值运算计算加窗序列的频谱幅值 %先求加窗序列的Z变换,注意表达式长度限制问题 Xwz=0;for n=0:(M-1);Xwz = Xwz+xwn(n+1)*z^(-n); end %利用复合函数计算加窗序列傅里叶变换的解析解 Zw=exp(j*w);HejwM=compose(Xwz,Zw,z,w); HejwM_num=subs(HejwM,w,w1*2*pi);%求频谱数值解 mag3=abs(HejwM_num);%计算各频点频谱的幅度 subplot(3,2,6);plot(w1,mag3*T),%绘频谱幅度曲线 %利用DFT计算加窗序列xw(n)的离散谱幅值
Ndft=16, Xk=fft(xwn,Ndft);%定义DFT点数和DFT运算 Xk0=fftshift(Xk)*T;%将DFT值0对称和幅值加权处理 if mod(Ndft,2)==0; N1=Ndft; else N1=Ndft-1; end; k=[0:(Ndft-1)]-N1/2;wk=k/Ndft;%0对称取值并归一化 hold on;stem(wk,abs(Xk0),'r.'),%绘制DFT图形 legend('幅谱','DFT',0),%加响应图例,位置自动最佳 xlabel('归一化频率'),ylabel('幅度'),%加标签 grid,title('( f ) 加窗序列幅谱及其DFT幅值'), plot(w1,mag1,'k:'),%与连续信号幅谱的理论值比较
该程序过程清晰、容易理解,程序运行结果如图2所示。图2(a)是信号的时域波形,图2(b)是对应的幅度谱图。由于在归一化频率为0.5的地方还有较大幅度,所以对信号进行理想采样后存在较大的混叠失真,表现在图2(d)中归一化频率为-0.5~0.5范围内的波形与图2(b)的波形明显不同。图2(e)是理想采样序列加矩形窗得到的图形,对应的幅度谱线如图2(f)中实线所示。该谱线与图2(d)相比有明显的不同(如波动现象),这是加窗截断的结果。窗口长度越短截断效应会越明显。对加窗序列进行DFT运算,只要DFT点数大于等于窗口长度,算出的DFT值就是对加窗序列的连续频谱在一个周期内进行的等间隔采样的采样值。在图2(f)中表现为DFT幅值在加窗序列连续幅谱的谱线上,是连续频谱曲线上的有限个数据点,即所谓栅栏效应。图2(f)中用虚线画出了连续信号的幅谱理论值,与DFT的幅值对比,存在一定误差,但只要采样频率足够高,时窗长度足够长,FFT点数足够大,得到的DFT值越逼近实际频谱。
4 结束语
利用傅里叶分析方法可以对各类信号进行频谱分析,DFT在时域和频域均实现了离散,适合数值运
算且有快速算法,解决了利用计算机分析信号频谱的难题。在实际分析过程中,对连续信号先要进行采样,会出现频谱混叠现象。对离散信号一般要进行加窗处理,会出现频谱泄漏和谱间干扰等截断效应。对加窗序列进行DFT运算,只能得到该序列连续谱的等间隔取样数据,故存在栅栏效应。理解了各种误差形成的原因和可能产生的不良后果,合理选择分析参数,完全可以使分析结果在工程误差允许范围内。 参考文献:
[1] 吴湘淇.信号与系统(第3版)[M].北京:电子工业出版社, 2009
[2] 吴湘淇,肖熙,郝晓莉.信号、系统与信号处理的软硬件实现[M].北京:电子工业出版社, 2002:45-78
[3] John G. Proakis,Dimitris G. Manolakis. 数字信号处理[M].方艳梅,刘永清译.北京:电子工业出版社, 2006:282-295
[4] 万建伟,王 玲.信号处理仿真技术[M].长沙:国防科技大学出版社, 2008:77-88
[5] 赵彦斌,张永瑞.信号谱分析中参数选择对频率分辨率的影响[J].电子科技, 2005,194(11):6-9
[6] 栗学丽,刘 琚.“数字信号处理”教学中易混淆的问题讨论[J].电气电子教学学报,2009,31(4):39-41 [7] 汉泽西,姚英彪.用DFT分析正弦信号频谱时应注意的几个问题[J].西安石油学院学报,2003,18(2):67-70 [8] 张志勇.精通MATLAB6.5[M].北京:北京航空航天大学出版社,2003
[9] 高西全,丁玉美.数字信号处理(第三版)[M].西安:西安电子科技大学出版社,2008:95-105 [10] 刘顺兰,吴 杰.数字信号处理(第二版)[M].西安:西安电子科技大学出版社,2008:137-145
图2 频谱分析图解说明