数字信号处理小论文题目:基于Matlab的信号DFT的计算
学校:湖北文理学院
学院:物理与电子工程学院
专业:电子信息工程
班级: 1311电工
姓名:第七组
指导教师:张静
利用MATLAB 实现信号DFT 的计算
一、目的:
1、熟悉利用MATLAB 计算信号DFT 的方法
2、掌握利用MATLAB 实现由DFT 计算线性卷积的方法
二、设备:
电脑、Matlab 软件
三、内容:
1、练习用Matlab 中提供的内部函数用于计算DFT 。
(1) fft (x ),fft (x ,N ),ifft (x ),ifft (x ,N )的含义及用法。
(2) 在进行DFT 时选取合适的时域样本点数N
例:
源程序:
>> N=30; %数据的长度
>>L=512; %DFT 的点数
>>f1=100; f2=120;
>>fs=600; %抽样频率
>>T=1/fs; %抽样间隔
>>ws=2*pi*fs;
>>t=(0:N-1)*T;
>>f=cos(4*pi*f1*t)+cos(4*pi*f2*t);
>>F=fftshift(fft(f,L));
>>w=(-ws/2+(0:L-1)*ws/L)/(2*pi);
>>hd=plot(w,abs(F));
>>ylabel('幅度谱')
>> xlabel('频率/Hz') 的频谱
分析利用)π4cos()π4cos()(DFT 21t f t f t x +=Hz
600,Hz 120,Hz 10021===s f f f
>> title('my picture')
结果图:
(3) 在对信号进行DFT 时选择hamming 窗增加频率分辨率
例:
题目:
源程序:
>> N=50; %数据的长度
>>L=512; %DFT 的点数
>>f1=100;f2=150;
>>fs=600; %抽样频率
>>T=1/fs; %抽样间隔
>>ws=2*pi*fs;
>>t=(0:N-1)*T; 的频谱
分析利用)π4cos(15.0)π4cos()(DFT 21t f t f t x +=Hz
600,Hz 150,Hz 10021===s f f f
>>f=cos(4*pi*f1*t)+0.15*cos(4*pi*f2*t);
>>wh=(hamming(N))';
>>f=f.*wh;
>>F=fftshift(fft(f,L));
>>w=(-ws/2+(0:L-1)*ws/L)/(2*pi);
>>plot(w,abs(F));
>>ylabel('幅度谱')
>> xlabel('频率/Hz')
>> title('my picture')
>> legend('N=50')
结果图:
2、增加DFT 点数M 以显示更多频谱细节
请举例,并编程实现
题目: 利用MATLAB 计算16点序列x [k ]的512点DFT 。
源程序:>> N = 32;
4
,32 ),/ π4cos(][===r N N rk k x
>> k = 0:N-1;
>> L = 0:511;
>> x = cos(4*pi*k*4./N);
>> X = fft(x);plot(k/N,abs(X),'o');
>> hold on
>> XE = fft(x,512);plot(L/512,abs(XE)) ;
>> legend('N=32')
结果图:
3、利用MATLAB实现由DFT计算线性卷积
例:
题目:利用MA TLAB由DFT计算x[k]* h[k]。
x[k]={1, 2, 1, 1}, h[k]={2, 2, 1, 1} 源程序:
% 利用DFT计算线性卷积
>> x = [1 2 1 1];
>>h = [2 2 1 1];
>> % 确定卷积结果的长度
>>L = length(x)+length(h)-1;
% 计算序列的L点DFT
>>XE = fft(x,L);
>.HE = fft(h,L);
>> % 由IDFT计算卷积结果
>>y1 = ifft(XE.*HE);
>> %绘制卷积结果及误差图
>> k=0:L-1;
>> subplot(1,2,1);
>> stem(k,real(y1));axis([0 6 0 7]);
>> title('Result of linear Convolution');
>> xlabel('Time index k');ylabel('Amplitude');
>> y2=conv(x,h);error=y1-y2;
>> subplot(1,2,2);stem(k,abs(error));
>> xlabel('Time index k');ylabel('Amplitude');
>> title('Error Magnitude');
结果图:
四、实验分析
1.是否可以利用DFT 计算DTFT,如果可以,怎么实现。
答:一个N点离散时间序列的傅里叶变换(DTFT)所得的频谱是以2π为周期延拓的连续函数。
由采样定理,时域进行采样,则频域周期延拓,同样在频域进行采样,则时域也会周期延拓。
DFT就基于这个理论,在频域进行采样,从而将信号的频谱离散化。
所以,一个N点离散时间信号可以用一个频域内一个N点序列来唯一确定,这就是DFT表达式所揭示的内容。
序列补零加长后,相当于频域的抽样点增多,反映在图形上即加零越多,频域抽
样点越多,DFT越逼近DTFT。
如果只是要在图形上显示DTFT,可以通过取足够多的点DFT来实现。
2.思考利用DFT 计算频谱时如何提高频谱的分辨率;对序列补零
加长是否能提高频谱的分辨率。
答:更长的时域信号能够提供更高的频域分辨率,因为一个N点的时域信号能被分解为N/2+1个余弦信号和N/2+1个正弦信号,N增大则(N/2+1)也增大,频域间隔(1/2的时域采样频率)/(N/2+1)减小,所以频域分辨率提高了。
所以利用DFT计算频谱时增加取样点的长度范围可以提高分辨率。
补零加长并不会改变频域的间隔,所以不能提高分辨率。
3.总结利用 DFT 计算连续时间信号频谱的方法,实现过程中需要注
意的问题。
答:利用DFT计算连续时间信号频谱,首先进行时域抽样,所得的抽样数据进行DFT计算,然后再将离散数据连续化,得到连续时间信号的频谱。
实现过程中应该注意时域抽样的间隔与长度,抽样不当将会丢失频率点,使计算出现错误。