通过DTFT的仿真以深入了模拟信号频率w和数字频率Ω的关系。
1)编写完成DTFT的M—Function
1 function [X,m]= DTFT(x,n,equ) 2 % 3 %功能:实现离散序列傅立叶变换X(ejw); 4 %x,n为输入序列 5 %w从0~π分成equ份 6 % 7 %并画出了幅频特性图 8 9 10 k = 0:equ; w = (pi/equ) * k; 11 X = x * (exp(-j*pi/equ)) .^(n\'*k); 12 13 magX = abs(X); angX = angle(X); 14 realX = real(X); imagX = imag(X); 15 subplot(2,2,1); plot(k/equ,magX);grid 16 xlabel(\'frequency in pi units\'); title(\'Magnitude Part\') 17 subplot(2,2,3); plot(k/equ,angX/pi);grid 18 xlabel(\'frequency in pi units\'); title(\'Angle Part\') 19 subplot(2,2,2); plot(k/equ,realX);grid 20 xlabel(\'frequency in pi units\'); title(\'Real Part\') 21 subplot(2,2,4); plot(k/equ,imagX);grid 22 xlabel(\'frequency in pi units\'); title(\'Imaginary Part\')
将以上代码保存为DTFT.m,并设置matlab工作目录为保存文件的目录。
2)设连续信号为x(t)=sin(0.5t),则Ω=0.5,f=1/(4*pi).
设fs=6*f,则T=2*pi/3,则x(n)=x(t)|t=nT=sin(0.5*2*pi*n/3)
由于x(t)是一个单频信号,所以其幅度谱在>0处应该只有一个高突出,<0对称(原因是实信号的傅立叶变换共轭对称)。
突出的位置应为:w = 2*pi*f/fs = 1/3 * pi,以pi为单位的话,那么突出点在0.333
仿真输入代码:
>> n=-100:100;x=sin(0.5*2*pi*n/3);
>> DTFT(x,n,500);
仿真结果:
显而易见,突出部分在0.333,与理论计算想符合。
3)思考
首先,验证了 w = Ω/fs 的w与Ω的映射关系 。
其次,x(n)=x(t)|t=nT=sin(0.5*2*pi*n/3),离散信号表达式已经包含了采样频率信息,而有时候往往只从离散信号表达式并不能分辨出采样频率,这需要预先知道。