北京理工大学数字信号处理1DFT.docx
《北京理工大学数字信号处理1DFT.docx》由会员分享,可在线阅读,更多相关《北京理工大学数字信号处理1DFT.docx(8页珍藏版)》请在冰豆网上搜索。
北京理工大学数字信号处理1DFT
北京理工大学数字信号处理1-DFT
数字信号处理
第3章离散傅里叶变换DFT
班级:
05941401
姓名:
张xx
学号:
112014xxxx
1、实验要求
利用DFT对信号(如由多个正弦信号组成的信号)进行频谱分析,并研究不同数据长度,补零,加窗等对频率分辨率的影响。
2、名词解释
1.补零:
在时域信号末端加一些零值点,以增加频域采样点数。
2.加窗:
计算机不能对无限长的信号进行测量和运算,需要从信号中截取一个时间片段,然后用截取的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。
3.频率分辨率:
指将两个相邻谱峰分开的能力。
3、实验内容及步骤
1.不同数据长度对频率分辨率的影响
(1)实验方法:
由于Matlab中没有dtf函数,所以新建一个m文件,根据已知DFT公式,定义一个dft函数。
然后设定采样长度分别为N=10和N=50,对同一个信号进行采样,并用matlab绘制其时域序列图、幅频特性曲线、频域序列图。
比较两者的最小频率间隔,从而比较频率分辨率。
(2)Matlab代码
①
N=10;
n=0:
1:
N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
Xk=dft(xn,N);
subplot(3,1,1)
stem(n,xn,'filled');
title('xn');
xlabel('n');
axis([0,10,-2.5,2.5]);
w=2*pi*(0:
1:
2047)/2048;
Xw=xn*exp(-j*n'*w);
subplot(3,1,2);
plot(w/pi,abs(Xw));
title('X(ejw)');
xlabel('w');
axis([0,1,0,10]);
subplot(3,1,3)
k1=0:
1:
9;w1=2*pi/10*k1;
stem(w1/pi,abs(Xk),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,10]);
②
N=50;
n=0:
1:
N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
Xk=dft(xn,N);
subplot(3,1,1)
stem(n,xn,'filled');
title('xn');
xlabel('n');
axis([0,10,-2.5,2.5]);
w=2*pi*(0:
1:
2047)/2048;
Xw=xn*exp(-j*n'*w);
subplot(3,1,2);
plot(w/pi,abs(Xw));
title('X(ejw)');
xlabel('w');
axis([0,1,0,30]);
subplot(3,1,3)
k1=0:
1:
49;w1=2*pi/50*k1;
stem(w1/pi,abs(Xk),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,30]);
(3)实验结果
N=10
N=50
(4)结论与分析
结论:
数据长度越长,频率分辨率越高。
分析:
根据公式
,其中N为采样点数,
为采样频率,
为采样间隔。
因此,T为数据长度,最小频率间隔与数据长度成反比;最小频率间隔越小,频率分辨率越高。
2.补零对频率分辨率的影响
(1)实验方法:
对上一实验中的相同信号进行补零至100位,仍然取N=10,模拟出其时域序列图、幅频特性曲线、频域序列图。
(2)Matlab程序:
N=10;
n=0:
N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
N1=100;n1=0:
N1-1;
x1=[xn(1:
10)zeros(1,90)];
subplot(3,1,1)
stem(n1,x1,'filled');
title('x1');
xlabel('n');
axis([0,20,-2.5,2.5]);
w=2*pi*(0:
2047)/2048;
X1=x1*exp(-j*n1'*w);
subplot(3,1,2);
plot(w/pi,abs(X1));
title('X(ejw)');
xlabel('w');
axis([0,1,0,10]);
subplot(3,1,3)
Xk=dft(x1,N1);
k1=0:
1:
49;
w1=2*pi/100*k1;
stem(w1/pi,abs(Xk(1:
1:
50)),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,10]);
(3)实验结果:
(4)结论与分析
补零对频率分辨率没有影响。
因为补零是在信号时域上进行的活动,信号的有效长度没有改变,所以频谱也没有变化,因而不能提高频率分辨率。
3.加窗对频率分辨率的影响
(1)实验方法:
设定采样长度N=50,对同一信号进行采样,采用加窗的方法对时域图像进行采样,模拟出时域序列图、幅频特性曲线和频域序列图。
这里要注意的是我们采用加窗的方法时,设定信号的长度为400,然后对长度为400的信号进行截短加窗,这时只有加窗处我们是对信号采样的,即得到的信号是有效的,其余位置信号都为0。
(2)Matlab代码:
N=50;
n=0:
N-1;
xn=sin(5*2*pi*n/30)+cos(3*2*pi*n/30);
N2=400;n2=1:
400;
x1=(sin(n2*5*2*pi/30)+cos(n2*3*2*pi/30)).*(heaviside(n2)-heaviside(n2-N+1));
subplot(3,1,1)
stem(n2,x1,'filled');
title('x1');
xlabel('n');
axis([0,10,-2.5,2.5]);
w=2*pi*(0:
2047)/2048;
X1=x1*exp(-j*n2'*w);
subplot(3,1,2);
plot(w/pi,abs(X1));
title('X(ejw)');
xlabel('w');
axis([0,1,0,30]);
subplot(3,1,3)
Xk=dft(x1,N2);
k1=0:
1:
399;
w1=2*pi/400*k1;
stem(w1/pi,abs(Xk),'filled');
title('Xk');
xlabel('pi');
axis([0,1,0,30]);
(3)实验结果:
(4)结论与分析:
通过比较上面的图形和实验1中的N=50的频域图像,可以看出频谱有轻微的失真。
这是因为加窗是在时域上对原信号乘一个窗函数,相当于频域上两者卷积。
导致了一定程度的谱线展宽,因而发生了频谱泄露,同时降低了频率分辨率。