数字信号处理实验讲义(修订版) 下载本文

数字信号处理实验讲义

n=1:50; %定义序列的长度是50

hb=zeros(1,50); %注意:MATLAB 中数组下标从1 开始 hb(1)=1; hb(2)=2.5; hb(3)=2.5; hb(4)=1;

close all; subplot(3,1,1);stem(hb);title(‘系统hb[n]’); m=1:50; T=0.001; %定义序列的长度是和采样率 A=444.128; a=50*sqrt(2.0)*pi; %设置信号有关的参数 w0=50*sqrt(2.0)*pi;

x=A*exp(-a*m*T).*sin(w0*m*T); %pi 是MATLAB 定义的π,信号乘可采用“.*” subplot(3,1,2);stem(x);title(‘输入信号x[n]’); y=conv(x,hb);

subplot(3,1,3);stem(y);title(‘输出信号y[n]’); 6、卷积定律验证

k=-25:25; X=x*(exp(-j*pi/12.5)).^(n’*k); magX=abs(X); %绘制x(n)的幅度谱

subplot(3,2,1);stem(magX);title(‘输入信号的幅度谱’); angX=angle(X); %绘制x(n)的相位谱

subplot(3,2,2);stem(angX) ; title (‘输入信号的相位谱’) Hb=hb*(exp(-j*pi/12.5)).^(n’*k);

magHb=abs(Hb); %绘制hb(n)的幅度谱

subplot(3,2,3);stem(magHb);title(‘系统响应的幅度谱’); angHb=angle(Hb); %绘制hb(n)的相位谱

subplot(3,2,4);stem(angHb) ; title (‘系统响应的相位谱’) n=1:99; k=1:99;

Y=y*(exp(-j*pi/12.5)).^(n’*k);

magY=abs(Y); %绘制y(n)的幅度谱

subplot(3,2,5);stem(magY);title(‘输出信号的幅度谱’); angY=angle(Y); %绘制y(n)的相位谱

subplot(3,2,6);stem(angY) ; title (‘输出信号的相位谱’) %以下将验证的结果显示 XHb=X.*Hb;

Subplot(2,1,1);stem(abs(XHb));title(‘x(n)的幅度谱与hb(n)幅度谱相乘’); Subplot(2,1,2);stem(abs(Y));title(‘y(n)的幅度谱’); axis([0,60,0,8000])

7、序列的相乘和相加

已知序列x1=[0,1,2,3,4,3,2,1,,0];n1=[-2:6];x2=[2,2,0,0,0,-2,-2],n2=[2:8].求它们的和及乘积,并画出序列的图形。 程序如下:

x1=[0,1,2,3,4,3,2,1,0];ns1=-2; % 给定x1及ns1 x2=[2,2,0,0,0,-2,-2]; ns2=2; % 给定x2及ns2 nf1=ns1+length(x1)-1; nf2=ns2+length(x2)-1; ny= min(ns1,ns2):max(nf1,nf2); % y(n)的时间变量

xa1 = zeros(1,length(ny)); xa2 = xa1; % 延拓序列初始化 xa1(find((ny>=ns1)&(ny<=nf1)==1))=x1; % 给xa1赋值x1 xa2(find((ny>=ns2)&(ny<=nf2)==1))=x2; % 给xa2 赋值x2 ya = xa1 + xa2 % 序列相加

6

数字信号处理实验讲义

yp = xa1.* xa2 subplot(4,1,1), stem(ny,xa1,'.') % 绘图 subplot(4,1,2), stem(ny,xa2,'.') line([ny(1),ny(end)],[0,0]) % 画x轴 subplot(4,1,3), stem(ny,ya,'.') line([ny(1),ny(end)],[0,0]) % 画x轴 subplot(4,1,4), stem(ny,yp,'.') line([ny(1),ny(end)],[0,0]) % 画x轴

% 序列相乘

8、离散序列的卷积运算

任意给出两对离散序列并求其卷积,图示该序列及其卷积结果。 程序如下:

% Nx:输入序列x(n)长度 % Nh:h(n)长度

% m:x(n)的移位样点数 clear;close all

Nx=20;Nh=10;m=5; n=0:Nx-1;

x1=(0.9).^n; %x1(n) %产生x2(n)=x1(n-m) x2=zeros(1,Nx+m); for k=m+1:m+Nx x2(k)=x1(k-m); end

nh=0:Nh-1;

h1=ones(1,Nh); %h1(n) h2=h1; %h2(n) y1=conv(x1,h1) %y1(n)

7

数字信号处理实验讲义

y2=conv(x2,h2) %y2(n) Ny1=length(y1); %y1(n)长度 Ny2=length(y2); %y2(n)长度 subplot(3,2,1);stem(n,x1,'.');

xlabel('n');ylabel('x1(n)');axis([0,Ny1,0,1]); subplot(3,2,3);stem(nh,h1,'.');

xlabel('n');ylabel('h1(n)');axis([0,Ny1,0,1]); n=0:Ny1-1;

subplot(3,2,5);stem(n,y1,'.');

xlabel('n');ylabel('y1(n)');axis([0,Ny1,0,max(y1)]); n=0:length(x2)-1;

subplot(3,2,2);stem(n,x2,'.');

xlabel('n');ylabel('x2(n)');axis([0,Ny2,0,1]); subplot(3,2,4);stem(nh,h2,'.');

xlabel('n');ylabel('h2(n)');axis([0,Ny2,0,1]); n=0:Ny2-1;

subplot(3,2,6);stem(n,y2,'.');

xlabel('n');ylabel('y2(n)');axis([0,Ny2,0,max(y2)])

8

数字信号处理实验讲义

实验二 离散时间傅里叶变换DTFT及IDTFT

一、实验目的

1、通过本实验,加深对DTFT和IDTFT的理解。

2、熟悉应用DTFT对典型信号进行频谱分析的方法。

二、实验原理与方法

离散时间信号(数字序列)的DTFT定义

? j??j?nX(e)?x(n)e

n??? 数字序列的IDTFT变换定义 1?X(ej?)ej?nd x ( n ) ?

2??

DTFT中的级数求和不一定总是收敛的,若x(n)绝对可和,则该级数绝对收敛(充分条件)。另外,平方可和序列的DTFT也存在,要强调的是平方可和序列不一定满足绝对可和的条件。

(1)由于e j? ? e j (? ? 2 ? ) ,所以X ( e j ? ) 是以2π为周期的周期函数。

?(2)DTFT

j?X(e)?x(n)e?jn?

n???

正是周期函数 X ( e j? ) 的付氏级数展开,而x(n)是付氏级数的系数。

?????三、实验内容及步骤

实验中用到的信号序列:

?1,RN(n)???0, 上机实验内容:

0?n?N?1n?0,n?N 1、生成一矩形序列,对其进行频谱分析,观察其时域波形和频域的幅频特性。记录实验中观察到的现象,绘出相应的时域序列和幅频特性曲线。

2、对于理想的低通滤波器,用IDTFT求出它的反变换所对应的离散时间序列。记录实验中观察到的现象,绘出相应的时域序列曲线。

四、实验思考

1、对于矩形序列的长度选择有什么要求?通过该实验你能看出离散时间信号序列频谱的周期性吗?

2、 离散时间信号的频谱分辨率在实验中能体现出来吗?实序列的DTFT具有对称性吗?若是,如何体现出来?

9