数字信号处理实验讲义
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