现代数字信号信号处理matlab编程范例.docx
- 文档编号:10564345
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:16
- 大小:183.10KB
现代数字信号信号处理matlab编程范例.docx
《现代数字信号信号处理matlab编程范例.docx》由会员分享,可在线阅读,更多相关《现代数字信号信号处理matlab编程范例.docx(16页珍藏版)》请在冰豆网上搜索。
现代数字信号信号处理matlab编程范例
信号处理仿真实验
目录
一、离散傅立叶变换2
1、补零DFT2
2、高密度频谱和高分辨率频谱3
3、用DFT进行谱分析5
二、短时傅立叶变换分析信号特性10
短时傅立叶变换分析信号特性10
一、离散傅立叶变换
1、补零DFT
,求N0分别取10,20时的X(k)。
解:
设N0=10,则
设N0=20,则
用Matlab进行仿真,得图1-1。
Matlab源程序:
%X(k)与X(ejw)的关系
clear;
n=0:
4;x=[ones(1,5)];
k=0:
999;w=(pi/500)*k;
X=x*(exp(-j*pi/500)).^(n'*k);%计算离散时间傅立叶变换X(ejw)
Xe=abs(X);
subplot(321);stem(n,x);ylabel('x(n)');
subplot(322);plot(w/pi,Xe);ylabel('|X(ejw)|');
N=15;x=[ones(1,5),zeros(1,N-5)];
n=0:
N-1;
k=0:
9;
X=x*(exp(-j*pi/5)).^(n'*k);%N=10点离散傅立叶变换
magX=abs(X);
subplot(323);stem(n,x);ylabel('x(n)');
subplot(324);stem(k,magX);axis([0,10,0,5]);ylabel('|X(k)|');
N=20;x=[ones(1,5),zeros(1,N-5)];
n=0:
1:
N-1;
k=0:
N-1;
X=x*(exp(-j*pi/10)).^(n'*k);;%N=20点离散傅立叶变换
magX=abs(X);
subplot(325);stem(n,x);ylabel('x(n)');
subplot(326);stem(k,magX);axis([0,20,0,5]);ylabel('|X(k)|');
图1-1
与
的关系
结论:
(1)填零是给原始序列的运算,给原始序列的离散时间傅立叶变换提供间隔较密的样本。
(2)为画出
,只需要5点的
用内插公式即可得到
,但实际上是用10或20点的
来填充
的值。
(3)填零运算提供了较密的频谱,而没有增加任何新的信息,因此它不能提供高分辨率的频谱。
(4)为得到高分辨率的频谱,需从实验或观察中取得更多的数据。
2、高密度频谱和高分辨率频谱
为了说明高密度频谱和高分辨率频谱之间的区别,考察序列
(1)当
时,确定并画出x(n)的离散傅立叶变化。
(2)当
时,确定并画出x(n)的离散傅立叶变换。
(3)当
时,确定并画出x(n)的离散傅立叶变换。
用Matlab进行仿真,得图1-2。
Matlab源程序:
%高密度频谱与高分辨率频谱
clear;
figure
(1);
N=40;M=10;
n=0:
N-1;
x=2*cos(0.35*pi*n)+cos(0.5*pi*n);
n1=0:
M-1;x1=x(1:
M);
subplot(231);stem(n1,x1);title('没有足够采样点的信号');
k1=0:
M-1;w1=2*pi*k1/M;
X1=x1*(exp(-j*2*pi/M)).^(n1'*k1);%计算M点DFT
Y1=abs(X1);
subplot(234);stem(w1/pi,Y1);title('信号的频谱');
n2=0:
N-1;x2=[x1,zeros(1,N-M)];
subplot(232);stem(n2,x2);title('填零信号');
k2=0:
N-1;w2=2*pi*k2/N;
X2=x2*(exp(-j*2*pi/N)).^(n2'*k2);%计算N点DFT
Y2=abs(X2);
subplot(235);stem(w2/pi,Y2);title('高密度频谱');
subplot(233);stem(n,x);title('有足够采样点的信号');
k=0:
N-1;w=2*pi*k/N;
X=x*(exp(-j*2*pi/N)).^(n'*k);%计算N点DFT
Y=abs(X);
subplot(236);stem(w/pi,Y);title('高分辨率频谱');
图1-2高密度频谱与高分辨率频谱
结论:
(1)当
时的序列x(n)与X(k),从X(k)图中几乎无法看出有关信号的频谱的信息。
(2)将x(n)补30个零点时的x(n)与X(k),这时的谱线相当密,但从中很难看出信号的频率成分,故称作高密度频谱。
将x(n)的长度加长到40时的x(n)与X(k),这时可以清晰的看出信号的频谱成分(
),故称为高分辨率频谱。
3、用DFT进行谱分析
信号的谱分析就是计算信号的傅立叶变换。
连续信号与系统的傅立叶变换不便于直接用计算机进行计算,其应用受到限制。
DFT是离散信号与系统分析的有力工具,对连续信号与系统可以通过时域采样,应用DFT进行近似谱分析。
对模拟信号
以间隔T进行采样,得到N点序列
,用N点DFT得到
幅度谱的估计。
(1)T=0.01s,N=40或N=50,一个能提供精确的
的幅度谱,画出DFT的幅度谱。
(2)T=0.005s,N=40或N=50,画出DFT的幅度谱。
用Matlab进行仿真,得图1-3。
Matlab源程序:
%用DFT进行频谱分析
T=0.01;N=40;n=0:
N-1;t=n*T;
xn=2*sin(4*pi*t)+5*cos(8*pi*t);
Xk=fft(xn,N);
magXk=abs(Xk);
k=0:
N-1;
subplot(241);plot(t,xn);axis([0,0.4,-7.5,7]);
title('T=0.01s,t=0.4s');ylabel('x(t)');
subplot(245);stem(k,magXk);title('T=0.01s,N=40');ylabel('X(k)');
T=0.01;N=50;n=0:
N-1;t=n*T;
xn=2*sin(4*pi*t)+5*cos(8*pi*t);
Xk=fft(xn,N);
magXk=abs(Xk);
k=0:
N-1;
subplot(242);plot(t,xn);axis([0,0.5,-7.5,7]);
title('T=0.01s,t=0.5s');
subplot(246);stem(k,magXk);title('T=0.01s,N=50');
T=0.005;N=40;n=0:
N-1;t=n*T;
xn=2*sin(4*pi*t)+5*cos(8*pi*t);
Xk=fft(xn,N);
magXk=abs(Xk);
k=0:
N-1;
subplot(243);plot(t,xn);axis([0,0.2,-7.5,7]);
title('T=0.005s,t=0.2s');
subplot(247);stem(k,magXk);title('T=0.005s,N=40');
T=0.005;N=50;n=0:
N-1;t=n*T;
xn=2*sin(4*pi*t)+5*cos(8*pi*t);
Xk=fft(xn,N);
magXk=abs(Xk);
k=0:
N-1;
subplot(244);plot(t,xn);axis([0,0.25,-7.5,7]);
title('T=0.005s,t=0.25s');
subplot(248);stem(k,magXk);title('T=0.005s,N=50');
图1-3用DFT进行频谱分析
结论:
采样间隔T=0.005s,采样点数N=50时的幅度谱是最精确的
的幅度谱,而其他情况都存在频谱泄漏。
用DFT分析连续时间信号的频谱。
已知一模拟信号
,现以采样率
进行采样。
用DFT计算当序列长度L=100和L=20时,N=200点的幅度频谱样值并通过作图与理论上准确的频谱样值进行比较。
解:
原信号的傅立叶变换
其幅度为
,如图1-4所示。
用DFT计算的频谱如图1-5所示。
Matlab源程序为:
%理论上的频谱
figure
(1);
Omeger=0:
0.1:
20*pi;
Xa=1./sqrt(1+Omeger.^2);
subplot(111);plot(Omeger/pi,Xa);title('|Xa(j*Omeger)|');
%用DFT计算的频谱
fs=20;
L=100;N=200;n=0:
L-1;t1=n/fs;
xn1=exp(-t1);xn=[xn1,zeros(1,N-L)];
Xk1=fft(xn,N);magXk1=abs(Xk1);
k1=0:
N-1;
L=20;N=200;n=0:
L-1;t2=n/fs;
xn2=exp(-t2);xn=[xn2,zeros(1,N-L)];
Xk2=fft(xn,N);magXk2=abs(Xk2);
k2=0:
N-1;
figure
(2);
subplot(221);plot(t1,xn1);title('xa(t)t=5s');
subplot(223);plot(t2,xn2);title('xa(t)t=1s');
subplot(222);plot(k1,magXk1);title('X(k)L=100N=200');
subplot(224);plot(k2,magXk2);title('X(k)L=20N=200');
图1-4理论上的频谱图1-5用DFT计算的频谱
结论:
(1)当序列长度为100时,进行200点DFT计算的结果混叠与泄漏影比较小,基本上接近原信号的频谱。
因为按给定的
,相当于取信号的最高频率
,故在
频率范围内的信号能量为
而信号总的能量为
所以
,基本上满足不混叠的要求。
(2)当序列长度为20时,进行200点DFT计算,由于截取x(n)的长度太短,
所以频谱因泄漏出现较大的波动,以致与原信号频谱有较大的差别。
用加窗函数DFT分析离散时间信号的频谱。
已知信号为
,分别加矩形窗、汉宁窗和三角窗对其进行DFT。
用Matlab画得如图1-6所示结果。
Matlab源程序如下:
%加窗后的信号及频谱
figure
(1);
L=20;N=200;n=0:
L-1;
xn=exp(-0.05*n);xn1=[xn,zeros(1,N-L)];
Xk=fft(xn1,N);magXk=abs(Xk);
k=0:
N-1;
subplot(211);stem(k,xn1);title('矩形窗x(n)');
subplot(212);stem(k,magXk);title('矩形窗X(k)');
figure
(2);
w=(hanning(L))';xn1=xn.*w;
xn2=[xn1,zeros(1,N-L)];
subplot(211);stem(k,xn2);title('汉宁窗x(n)');
Xk=fft(xn2,N);magXk=abs(Xk);
subplot(212);stem(k,magXk);title('汉宁窗X(k)');
figure(3);
w=(triang(L))';xn1=xn.*w;
xn2=[xn1,zeros(1,N-L)];
subplot(211);stem(k,xn2);title('三角窗x(n)');
Xk=fft(xn2,N);magXk=abs(Xk);
subplot(212);stem(k,magXk);title('汉宁窗X(k)');
figure(4);
w=(hamming(L))';xn1=xn.*w;
xn2=[xn1,zeros(1,N-L)];
subplot(211);stem(k,xn2);title('汉明窗x(n)');
Xk=fft(xn2,N);magXk=abs(Xk);
subplot(212);stem(k,magXk);title('汉明窗X(k)');
figure(5);
w=(blackman(L))';xn1=xn.*w;
xn2=[xn1,zeros(1,N-L)];
subplot(211);stem(k,xn2);title('布拉克曼x(n)');
Xk=fft(xn2,N);magXk=abs(Xk);
subplot(212);stem(k,magXk);title('布拉克曼X(k)');
图1-6加窗后的信号及频谱
结论:
(1)实际工作中往往要把信号的观察时间限制在一定的时间间隔内,就需要用有限个数据,即将信号截断,相当于将信号乘以窗函数。
在时域的截断,相当于所研究的频谱与窗函数频谱的周期卷积,周期卷积的结果造成频谱从其正常频谱扩展开来,成为“泄漏”。
泄漏效应是DFT固有的,可用加窗函数进行抑制。
用加窗函数加权使有限长度的输入信号周期延拓后,在边界上尽量减少不连续程度,从而达到抑制频谱泄漏的目的。
(2)从图1-6可以看出,加不同窗函数得到的过渡带由窄到宽的顺序为:
矩形窗三角窗汉宁窗汉明窗布拉克曼窗
加不同窗函数得到的最小阻带衰减由低到高的顺序为:
矩形窗三角窗汉宁窗汉明窗布拉克曼窗
可见,若要得到最窄的过渡带,选择矩形窗,要得到最高的最小阻带衰减,选布拉克曼窗,而若要兼顾过渡带和最小阻带衰减,则选择三角窗、汉宁窗和汉明窗。
二、短时傅立叶变换分析信号特性
短时傅立叶变换分析信号特性
数字信号
,在(50,100)和(200,260)分别有两个频率不同的正弦信号,用短时傅立叶变换分析其特性。
附程序:
functionstft
N=300;t=0:
N-1;
x=zeros(1,N);
x(50:
100)=cos(pi*(t(50:
100)-50)/10);
x(200:
260)=cos(pi*(t(200:
260)-200)/5);
subplot(2,2,1);
plot(x);
title('x');
X=fft(x);
X=fftshift(X);
subplot(2,2,2);
plot(abs(X));
title('abs(X)');
Nw=20;
L=Nw/2;Ts=(N-Nw)/L+1;
nfft=32;
TF=zeros(Ts,nfft);
fori=1:
Ts
xw=x((i-1)*L+1:
i*L+L);
temp=fft(xw,nfft);
temp=fftshift(temp);
TF(i,:
)=temp;
end
subplot(2,2,3);mesh(abs(TF));
title('abs(TF)');
subplot(2,2,4);contour(abs(TF));
title('abs(TF)');
实验结果
图3-1
实验分析
由实验结果可知,在信号的频谱中可以看出观测到的信号中存在两种频率,但是不能得出它们的时间持续范围,而从信号的时频平面中不仅可以看出这两种信号的频率,而且还能够得到它们的时间持续范围。
不确定性原理表明:
对于短时傅立叶变换,其时间分辨力和频率分辨力是互相矛盾的,信号的时域波形与频谱不能同时获得高的分辨力。
在实际信号分析中,应采取恰当的时间窗函数,由具体问题本身的特性来决定。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 现代 数字信号 信号 处理 matlab 编程 范例