实验二Z变换和傅立叶变换 01830105.docx
《实验二Z变换和傅立叶变换 01830105.docx》由会员分享,可在线阅读,更多相关《实验二Z变换和傅立叶变换 01830105.docx(9页珍藏版)》请在冰豆网上搜索。
实验二Z变换和傅立叶变换01830105
数字信号处理
学院理学院
年级专业2011级电子信息工程01班
指导老师刘x
学号201101830105
姓名郑xx
实验二Z变换和傅立叶变换
实验目的:
掌握Z变换和反变换和傅立叶变换在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)
结果:
x=
2817231915
n=
-3-2-1012
(2)
clear,closeall
x=[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])
m文件
impseq.m
function[x,n]=impseq(n0,ns,nf)
n=[ns:
nf];x=[(n-n0)==0];
stepseq.m
function[x,n]=stepseq(n0,ns,nf)
n=[ns:
nf];x=[(n-n0)>=0];
(1)离散时间傅立叶变换
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,shg
disp('重复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,shg
disp('重复无穷次的八点信号的离散傅立叶变换')
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,shg
axis([-8,max(w),0,max(abs(X2))]),grid,shg
m文件
dtft.m
functionX=dtft(x,w)
X=x*exp(-j*[1:
length(x)]'*w);
(2)由离散序列恢复模拟信号
clear,closeall;
A=444.128;a=50*sqrt
(2)*pi;b=a;
fork=1:
2
ifk==1Fs=400;
elseifk==2Fs=1000;end
T=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);holdon
axis([0,max(t),min(xa)-10,max(xa)+10]);
st1=sprintf('有Fs=%d',Fs);
st2='Hz的采样序列z(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
(3)梳状滤波器零极点和幅频特性
clear;closeall
b=[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),grid
subplot(4,2,2),zplane(b,a1),grid
subplot(4,2,3),plot(w/pi,abs(H)),grid
subplot(4,2,4),plot(w1/pi,abs(H1)),grid
subplot(4,2,5),zplane(b,a2),grid
subplot(4,2,6),zplane(b,a3),grid
subplot(4,2,7),plot(w2/pi,abs(H2)),grid
subplot(4,2,8),plot(w3/pi,abs(H3)),grid
(4)低通滤波效果及傅立叶变换时域卷积定理验证
clear;closeall
n=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('IFT[y(n)]I')
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('Ift[y(n)]I')
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幅度')
实验总结:
这次试验让我学会了Z变换和傅里叶变换,掌握Z变换和反变换和傅里叶变换在MATLAB中的处理过程,通过基本技能训练内容对这一技能掌握的更熟练了。
并在实验的过程中发现了自己的不足,并加以改正。