一、实验目的
掌握 Z 变换和反变换和傅立叶变换在 MATLAB 中的处理过程,应用 MATLAB 信号处理工具箱提供的求连续和离散系统频率响应的函数。
二、实验内容
1. 有限长序列的 Z 变换和逆 Z 变换
x1=[1,2,3]; ns1=-1;nf1=ns1+length(x1)-1;x2=[2,4,3,5];ns2=-2;nf2=ns1+length(x1)-1;x=conv(x1,x2)n=(ns1+ns2):(nf1+nf2)
2.求 Z 多项式分式的逆变换
clear,close allx=[2,4,3,5];nsx=-2;nfx=nsx+length(x)-1;Bw=-3;nsbw=-1;Aw=[2,-2.2,.5];nsaw=0;B=conv(-3,x);A=Aw;nsy=nsaw-(nsbw-nsx)[r,p,k]=residuez(B,A)nf=input('终点时间 nf= ');n=min(nsx,nsy):nf;yi=(r(1)*p(1).^(n-nsy)+r(2)*p(2).^(n-nsy)).*stepseq(nsy,n(1),nf);yd =k(1) *impseq(nsy,n(1),nf)+k(2) *impseq(-1-nsy,n(1),nf);y=yi+yd;xe=zeros(1,length(n));xe(find((n>=nsx)&(n<=nfx)==1))=x;subplot(2,1,1),stem(n,xe,'.'),line([min(n(1),0),nf],[0,0])subplot(2,1,2),stem(n,y,'.'),line([min(n(1),0),nf],[0,0])
3. 离散时间傅立叶变换
disp('八点时间信号的离散时间傅立叶变换')x0=sin(2*pi*[1:8]/8)*5;dt=2*pi/8;w=linspace(-8,2*pi,1000)/dt;X0=dtft(x0,w)*dt;subplot(3,1,1),plot(w,abs(X0)),axis([-8,max(w),0,max(abs(X0))]),grid,shgdisp('重复 N 次的八点时间信号的离散时间傅立叶变换')N=input('N= ');x1=reshape(x0'*ones(1,N),1,N*length(x0));X1=dtft(x1,w)*dt;subplot(3,1,2),plot(w,abs(X1)),axis([-8,max(w),0,max(abs(X1))]),grid,shgdisp('重复无穷次的八点信号的离散傅立叶变换')pause,X2=fft(x0*dt);w1=2*pi*[0:length(x0)-1]/length(x0);subplot(3,1,3),stem([-w1,w1],[abs(X2),abs(X2)]),grid,shgaxis([-8,max(w),0,max(abs(X2))]),grid,shg
4. 由离散序列恢复模拟信号
clear;close all;A=444.128;a=50*sqrt(2)*pi;b=a;for k=1:2if k==1 Fs=400;elseif k==2 Fs=1000;endT=1/Fs;dt=T/3;Tp=0.03;t=0:dt:Tp;n=0:Tp/T;TMN=ones(length(n),1)*t-n'*T*ones(1,length(t));x=A*exp(-a*n*T).*sin(b*n*T);xa=x*sinc(Fs*TMN);subplot(2,1,k);plot(t,xa);hold onaxis([0,max(t),min(xa)-10,max(xa)+10]);st1=sprintf('由 Fs=%d',Fs);st2='Hz 的采样序列 x(n)重构的信号';st=[st1,st2];title(st)ylabel('xa(t)');xo=A*exp(-a*t).*sin(b*t);stem(t,xo,'.');line([0,max(t)],[0,0])emax2=max(abs(xa-xo))end
5. 梳状滤波器零极点和幅频特性
clear;close allb=[1,0,0,0,0,0,0,0,-1];a0=1;a1=[1,0,0,0,0,0,0,0,-(0.8)^8];a2=[1,0,0,0,0,0,0,0,-(0.9)^8];a3=[1,0,0,0,0,0,0,0,-(0.98)^8];[H,w]=freqz(b,a0);[H1,w1]=freqz(b,a1);[H2,w2]=freqz(b,a2);[H3,w3]=freqz(b,a3);subplot(4,2,1),zplane(b,a0),gridsubplot(4,2,2),zplane(b,a1),gridsubplot(4,2,3),plot(w/pi,abs(H)),gridsubplot(4,2,4),plot(w1/pi,abs(H1)),gridsubplot(4,2,5),zplane(b,a2),gridsubplot(4,2,6),zplane(b,a3),gridsubplot(4,2,7),plot(w2/pi,abs(H2)),gridsubplot(4,2,8),plot(w3/pi,abs(H3)),grid
6. 低通滤波效果及傅立叶变换时域卷积定理验证
clear;close alln=0:255;N=4096;x=cos(0.04*pi*n)+cos(0.08*pi*n)+cos(0.4*pi*n);w=randn(size(x));x=x+0.3*w;b=[1,2,1];B=0.0003738*conv(conv(b,b),b);a1=[1,-1.2686,0.7051];a2=[1,-1.0106,0.3583];a3=[1,-0.9044,0.2155];A=conv(conv(a1,a2),a3);y=filter(B,A,x);X=fft(x,N);Y=fft(y,N);[H,f]=freqz(B,A,N,'whole');Ym=H'.*X;k=0:N-1;f=2*k/N;subplot(3,2,1);stem(x,'.');xlabel('n'),ylabel('x(n)')subplot(3,2,2);plot(f,abs(X));xlabel('w/pi'),ylabel('|FT[y(n)]|')subplot(3,2,3);stem(y,'.');xlabel('n'),ylabel('y(n)')axis([0,60,-1,1])subplot(3,2,4);plot(f,abs(Y));xlabel('w/pi'),ylabel('|FT[y(n)]|')subplot(3,2,5);plot(f/pi,abs(H));xlabel('w/pi'),ylabel('H 幅度')subplot(3,2,6);plot(f/pi,abs(Ym));xlabel('w/pi'),ylabel('Ym 幅度')
三、实验中遇到的问题及解决过程
没有注意到中英文输入法的标点符号是有区别的,导致最后程序执行的时候出现了好几个错误输入程序的时候,对于中括号和小括号的配对没有注意,导致执行时出现了错误四、实验提问
= =是什么意思?等于的意思。plot是什么意思?绘图的意思。五、实验总结
通过本次实验,使我进一步学习了数字信号处理实验的一些基本操作。
附:程序清单
此处为语雀加密文本卡片,点击链接查看:/yuqueyonghuaez4ch/bqm5qg/mgm5c6#i4WcU
如果觉得《【数字信号处理】实验二 Z 变换和傅立叶变换》对你有帮助,请点赞、收藏,并留下你的观点哦!