第一篇:武汉工程大学matlab实验二离散时间信号的分析实验
武汉工程大学
数字信号处理实验报告二
专业班级:
14级通信03班 学生姓名:秦重双 学号:
1404201114 实验时间:
2017年5月3日 实验地点:
4B315 指导老师:杨述斌
实验一离散时间信号的分析实验
一、实验目的
① 认识常用的各种信号,理解其数学表达式和波形表示。② 掌握在计算机中生成及绘制数值信号波形的方法。③ 掌握序列的简单运算及计算机实现与作用。
④ 理解离散时间傅里叶变换、Z变换及它们的性质和信号的频域特性。
二、实验设备
计算机,MATLAB语言环境。
三、实验基础理论
1、序列的相关概念
离散时间信号用一个称为样本的数字序列来表示。一般用{x[n]}表示,其中自变量n的取值范围是﹣∞到﹢∞之间的整数。为了表示方便,序列通常直接用x[n]表示。
离散时间信号可以是一个有限长序列,也可以是一个无限长序列。有限长(也称为有限时宽)序列仅定义在有限的时间间隔中:﹣∞≤N1 ≤N2 ≤+∝.有限长序列的长度或时宽为N=N1-N2+1。
满足x[n+kN]=x[n](对于所有n)的序列称为周期为N的周期序列,其中N取任意正整数;k取任意整数;
2、常见序列
常见序列有单位取样值信号、单位阶跃序列、矩形序列、斜变序列、单边指数序列、正弦序列、复指数序列等。
3、序列的基本运算
序列的基本运算有加法、乘法、倒置(反转)、移位、尺度变换、卷积等。
4、离散傅里叶变换的相关概念
5、Z变换的相关概念
四.实验内容与步骤
1、知识准备
认真复习以上基础理论,理解本实验所用到的实验原理。
2、离散时间信号(序列)的产生
利用MATLAB语言编程和绘制单位样值信号、单位阶跃序列、指数序列、正弦序列及随机离散信号的波形,以加深对离散信号时域表示的理解。① 单位取样值信号
Matlab程序
x=0;y=1;stem(x,y);title('单位样值');axis([-2,2,0,1]);
② 单位阶跃序列 Matlab程序
n0=0;n1=-5;n2=5;n=[n1:n2];x=[(n-n0)>=0];stem(n,x);xlabel('n');ylabel('x(n)');title('单位阶跃序列');
③ 指数序列、正弦序列 Matlab程序
n=[0:10];x=(1/3).^n;stem(n,x);xlabel('n');ylabel('x(n)');title('指数序列');
n=[-20:20];x=2*sin(0.5.*n);stem(n,x);xlabel('n');ylabel('x(n)');axis([-20,20,-3,3]);title('正弦序列');
④ 随机离散信号矩形序列 Matlab程序
n=[1:10];x=rand(1,10);stem(n,x);xlabel('n');ylabel('x(n)');title('随机序列');
3、序列的运算
数字信号处理的目的,就是从一个或几个给定的离散时间信号中产生一个具有所需性质的信号。处理算法由加法、乘法、倒置(反转)、移位、尺度变换、卷积等基本运算组合构成。此部分实验将通过几个简单常见的例子说明这些基本运算的实际运用,以便进一步理解序列的简单运算及计算机实现与作用。(1)信号平滑 利用MATLAB语言编程实现信号平滑运算。信号平滑是数字信号处理应用中的一个常见的算法,以虑出被加性噪声污染的信号中的噪声。假定信号s[n]被噪声d[n]所污染,得到了一个含有加性噪声的信号x[n]=s[n]+d[n]。要得到无污染的信号,可用简单的信号平滑即信号的加法实现。例如,采用三点(可选,以信号特点来定)平滑来实现。y[n]=(x[n-1]+x[n]+x[n+1])/3 由此可以理解平滑滤波的处理方法。
Matlab程序
r=65;
d=0.8*(rand(r,1)-0.5);m=0:r-1;s=2*m.*(0.9.^m);x=s+d';subplot(2,1,1);
plot(m,d','r-',m,s,'g--',m,x,'b-.');xlabel('n');ylabel('振幅');
legend('d[n]','s[n]','x[n]');x1=[0 0 x];x2=[0 x 0];x3=[x 0 0];y=(x1+x2+x3)/3;subplot(2,1,2);
plot(m,y(2:r+1),'r-',m,s,'g--');legand('y[n]','s[n]');xlabel('n');ylabel('振幅');
(2)调制信号的产生
利用MATLAB语言编程实现信号的调制。调制信号是工程应用中常用的一类信号,调制信号的产生可以通过序列的乘法运算得到。例如,用低频调制信号xL[n]=cos(wln)来调制高频正弦信号xH[n]=cos(wHn),就可得到振幅调制信号y[n]。
y[n]=A(1+m*xL[n])xH[n]=A(1+mcos(wLn))cos(wHn)其中m称为调制指数,用来确保(1+m*xL[n])在所有可能的n的情况下m都是正数。以上式进行编程即可实现调制的目的。
Matlab程序
Fm=10;Fc=100;Fs=500;k=0:199;t=k/Fs;x=sin(2*pi*Fm*t);y=x.*cos(2*pi*Fc*t);X=fft(x,256);Y=fft(y,256);subplot(2,2,1);plot(x);
xlabel('t(s)');ylabel('x');title('原信号');
subplot(2,2,2);plot(X);
plot([-128:127],fftshift(abs(X)));xlabel('w');ylabel('X(jw)');title('原信号频谱');
subplot(2,2,3);plot(y);xlabel('t(s)');ylabel('y');title('调制信号');subplot(2,2,4);
plot(Y);plot([-128:127],fftshift(abs(Y)));xlabel('w');ylabel('Y(jw)');title('调制信号频谱');
(3)卷积的计算
用MATLAB语言编程可实现信号卷积运算。卷积是数字信号处理中非常重要的一个运算,用卷积可以计算一个序列通过离散系统后的响应信息。如可以编程实现9点对7点(序列长度可以自己设定)的序列卷积运算。
Matlab程序
x=[0 0.5 1 1.5 0];nx=0:4;h=[1 1 1 0 0];nh=0:4;[y,ny]=conv_m(x,nx,h,nh);subplot(2,2,1);stem(nx,x);title('序列x');xlabel('n');ylabel('x(n)');subplot(2,2,2);stem(nh,h);title('序列h');xlabel('n');ylabel('h(n)');subplot(2,2,3);stem(ny,y);title('');xlabel('n');ylabel('y(n)');
conv_m函数程序
function[y,ny]=conv_m(x,nx,h,nh)%信号处理的卷积程序
%[y,ny]=conv_m(x,nx,h,nh)%y=卷积结果
%ny=y的基底(support);%nx=x的基底;%h=基底nh上的第二个信号 %nh=h的基底 nyb=nx(1)+nh(1);nye=nx(length(x))+nh(length(h));ny=[nyb:nye];y=conv(x,h);end
两
序
列
卷
积
(4)序列的离散傅里叶变换,Z变换及信号频域特性 用MATLAB语言编程实现信号离散傅里叶的正反变换。Matlab程序
xn=[1,1,1,1];N=4;k=dft(xn,N)' Xk=[4,0,0,0];N=4;Xk=idft(xn,N)' xn=[1,1,1,1];N=length(xn);n=0:N-1;k=0:N-1;Xk=xn*exp(-j*2*pi/N).^(n'*k);x=(Xk*exp(j*2*pi/N).^(n'*k))/N;subplot(1,2,2);stem(k,abs(Xk));grid on;title('|X(k)|');axis([-1,N,1.1*min(abs(Xk)),1.1*max(abs(Xk))]);subplot(1,2,1);stem(n,xn);grid;title('x(n)');axis([-1,N,1.1*min(xn),1.1*max(xn)]);
dft函数程序
function[Xk]=dft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;end
idft函数程序
function[Xk]=idft(xn,N)n=[0:1:N-1];k=n;WN=exp(-j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;
end
用MATLAB语言编程实现信号的圆周移位、圆周卷积、验证DFT的圆周时移、圆周卷积性质和圆周卷积与线性卷积的关系。
圆周移位 Matlab程序
n=[0:10];M=6;N=11;x=10*0.8.^n;y=cirshift(x,M,N);subplot(2,1,1);stem(n,x);
title('Ô-ÐòÁв¨ÐÎ');xlabel('n');ylabel('x(n)');subplot(2,1,2);stem(n,y);
title('Ô²ÖÜÒÆλÐòÁв¨ÐÎ');xlabel('n');ylabel('y(n)');
sigmod函数程序
function[ m ]= sigmod(n,N);m=rem(n,N);m=m+N;m=rem(m,N);end
cirshift函数程序
function[ y ]= cirshift(x,m,N);if length(x)>N
error('N must be greater than length(x)');end
x=[x zeros(1,N-length(x))];n=[0:N-1];n=sigmod(n-m,N);y=x(n+1);end
圆周卷积
Matlab程序
x1=[1 2 2];n1=[0:2];x2=[1 2 3 4];n2=[0:3];disp('N=5');n3=[0:4];N=5;y=circonvt(x1,x2,N)subplot(3,1,1);stem(n1,x1);title('x1');xlabel('n1');ylabel('x1(n)');subplot(3,1,2);stem(n2,x2);title('x2');xlabel('n2');ylabel('x2(n)');subplot(3,1,3);stem(n3,y);title('圆周卷积');xlabel('n3');ylabel('y(n)');
circonvt函数程序
function [y] = circonvt(x1,x2,N);if length(x1)>N error('Length(x1)is not great than N');end if length(x2)>N error('Length(x2)is not great than N');end x1=[x1, zeros(1,N-length(x1))];x2=[x2, zeros(1,N-length(x2))];m=[0:N-1];x2=x2(mod(-m,N)+1);H=zeros(N,N);for n=1:N;H(n,:)=cirshift(x2,n-1,N);end y=x1*H';end
验证一个实周期序列奇偶部分的DFT与此序列本身的DFT之间的关系。Matlab程序
function[xe,xo,m]=evenodd(x,n)if any(imag(x)~=0)error end
m=-fliplr(n);m1=min([m,n]);m2=max([m,n]);m=m1:m2;
nm=n(1)-m(1);n1=1:length(n);x1=zeros(1,length(m));x1(n1+nm)=x;x=x1;xe=0.5*(x+fliplr(x));xo=0.5*(x-fliplr(x));n=[0:10];x=stepseq(0,0,10)-stepseq(10,0,10);[xe,xo,m]=evenodd(x,n);
subplot(2,2,2);stem(m,xe);title('偶部');xlabel('n');ylabel('xe(n)');subplot(2,2,4);stem(m,xo);title('奇部');xlabel('n');ylabel('xo(n)');
用MATLAB语言编程实现信号的Z变换及其反变换、Z变换的零极点分布。
a=[1 1-6];b=[0 5 0];
[r,p,k]=residuez(b,a);subplot(121);zplane(b,a);
title('零极点分布图');[H,w]=freqz(b,a,100);magH=abs(H);phaH=angle(H);figure(2)
subplot(222);plot(w/pi,magH);grid xlabel('frequency in pi units');title('magnitude part');
subplot(223),plot(w/pi,phaH/pi);grid xlabel('frequency in pi units');title('Angle part');
五、实验扩展思考
① 编程产生方波信号序列和锯齿波信号序列。
x=[0:1/256:8];y1=square(pi*x);
subplot(2,1,1);plot(x,y1);axis([0,8,-2,2]);title('方波');xlabel('x');ylabel('y1');grid on;y2=sawtooth(pi*x);subplot(2,1,2);plot(x,y2);title('锯齿波');xlabel('x');ylabel('y2');grid on;
② 实验中所产生的正弦序列的频率是多少?怎样才能改变它?分别是哪些参数控制该序列的相位、振幅和周期?
正弦序x[n=]Asin(w0n+Φ)频率f=w0/2pi通过改变w0改变频率f;Φ控制序列相位,A控制序列振幅,w0控制序列周期。
③ 编程实现序列长度为N的L点的正反离散傅里叶变换,并分析讨论所得出的结果,其中L≧N,如L=8,N=6。
function[Xk]=dft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^nk;Xk=xn*WNnk;
function[Xk]=idft(xn,N)n=[0:1:8-1];k=n;WN=exp(-1j*2*pi/N);nk=n'*k;WNnk=WN.^(-nk);Xk=xn*WNnk/N;
④ 由实验说明离散傅里叶变换的对称关系,说明序列的时域和频域的关联特性。
离散傅里叶变换具有共轭对称性
(1)复共轭序列的DFT。设x*(n)为x(n)的复共轭序列,长度为N,X(k)=DFT[x(n)],则DFT[x*(n)]=X*(N-K),0<=k<=N-1(2)DFT的共轭对称性。
定义圆周共轭对称分量xep(n)和圆周共轭反对称分量xop(n)xep(n)=1/2[x(n)+x*(N-n)],xop(n)=1/2[x(n)-x*(N-n)]则 DFT[xep(n)]=Re[X(k)], DFT[xop(n)]=jIm[X(k)] 序列的时域和频域的关联特性(1)时域卷积对应频域相乘
设f[x(n)]=X(ejw),f[h(n)]=H(ejw),y(n)=x(n)*h(n), 则Y(e^jw)=1/2pi[X(e^jw)*H(e^jw)](2)时域相乘对应于1/2*pi的频域卷积 设f[x(n)]=X(e^jw),f[h(n)]=H(e^jw),y(n)=x(n)h(n),则Y(e^jw)=1/2*pi[X(e^jw)*H(e^jw)]
六、实验报告要求
1、实验中的主要结论:圆周卷积与线性卷积之间的关系。
设圆周卷积y(n)=∑x1(m)x2(n-m)LRL(n),线性卷积y1(n)=x1(n)*x2(n),则y(n)=[∑y1(n+rL)]Rl(n),及当L>=N1+N2-1,y(n)=y1(n)。
2、通过编写程序,让我更熟练的使用MATLAB,能更好的理解书本所学的内容
3、心得体会:在使用matlab软件定义函数时,必须对函数的含义理解清楚,要不然很容易定义函数出现错误。其次要对matlab自带函数的含义用法理解清楚。这次实验我最大的收获就是对离散时间序列的理论基础的概念有了一个很好的复习和更深刻的认识。遇到最大的问题就是定义函数时考虑不够全面。但是我相信随着后面实验的进行,我能将matlab这个工具与课本的理论基础知识完美的结合起来。
第二篇:实验二离散时间信号分析
实验二离散时间信号分析
一、实验目的1.掌握各种常用的序列,理解其数学表达式和波形表示。
2.掌握在计算机中生成及绘制数字信号波形的方法。
3.掌握序列的相加、相乘、移位、反褶等基本运算及计算机实现与作用。
4.掌握线性卷积软件实现的方法。
5.掌握计算机的使用方法和常用系统软件及应用软件的使用。
6.通过编程,上机调试程序,进一步增强使用计算机解决问题的能力。
二、实验原理
1.序列的基本概念
离散时间信号在数学上可用时间序列{x(n)}来表示,其中x(n)代表序列的第n个数字,n代表时间的序列,n的取值范围为n的整数,n取其它值x(n)没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号xa(t)进行等间隔采样,采样间隔为T,得到{xa(nT)}一个有序的数字序列就是离散时间信号,简称序列。
2.常用序列
常用序列有:单位脉冲序列(单位抽样)(n)、单位阶跃序列u(n)、矩形序列RN(n)、实指数序列、复指数序列、正弦型序列等。
3.序列的基本运算
序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。
4.序列的卷积运算
y(n)
mx(m)h(nm)x(n)h(n)
上式的运算关系称为卷积运算,式中代表两个序列卷积运算。两个序列的卷积是一个序列与另一个序列反褶后逐次移位乘积之和,故称为离散卷积,也称两序列的线性卷积。其计算的过程包括以下4个步骤。
(1)反褶:先将x(n)和h(n)的变量n换成m,变成x(m)和h(m),再将h(m)以纵轴为对称轴反褶成h(m)。
(2)移位:将h(m)移位n,得h(nm)。当n为正数时,右移n位;当n为负数时,左移n位。
(3)相乘:将h(nm)和x(m)的对应点值相乘。
(4)求和:将以上所有对应点的乘积累加起来,即得y(n)。
5.matlab命令
1、单位采样序列:可用MATLAB中的zeros函数实现;
X=[1 zeros(1,n-1)]
2、单位阶跃序列:这一序列可用MATLAB中的zeros函数实现;
X=ones(1,N)
3、实指数序列;
n=0:N-1;
x=a.^n;
4、正弦波:
t=0:0.01*pi:2*pi
x=sin(2*pi*t);
plot(t,x);
xlabel(‘时间t’);
ylabel(‘幅值y’);
5、移位
用MATLAB编写一个移位函数sigshift()
function [y,m]=sigshift(x,n,k)
%implements y(m+k)=x(n)
m=n+k;
y=x;
把上面的矩形序列右移3位
n0=0;
n1=-10;
n2=10;
n=[n1:n2];
x=[(n-n0)>=0&(n-4)<=0];
k=3;
[y,n]=sigshift(x,n,k);
stem(n,y);
xlabel('n');ylabel('x(n)');
title('step sequence');
grid6、翻褶
用MATLAB编写一个翻褶函数sigfold()
function [y,n]=sigfold(x,m,k)
y=fliplr(x);
n=-fliplr(n);
用MATLAB编写一个程序把上面的矩形序列翻褶
三、主要实验仪器及材料
微型计算机、Matlab6.5教学版、TC编程环境。
四、实验内容
1.知识准备
认真复习以上基础理论,理解本实验所用到的实验原理。
2.离散时间信号(序列)的产生。
利用MATLAB编程产生和绘制下列有限长序列:
(1)单位脉冲序列(n)
(2)单位阶跃序列u(n)
(3)矩形序列R8(n)
(4)正弦型序列x(n)Asin((5)任意序列 5n3)
x(n)(n)2(n1)3(n2)4(n3)5(n4)
h(n)(n)2(n1)(n2)2(n3)
3.序列的运算
利用MATLAB编程完成上述两序列的移位、反褶等运算,并绘制运算后序列的波形。
4.卷积运算
利用MATLAB编制一个计算两个序列线性卷积的通用程序,计算上述两序列x(n)h(n),并绘制卷积后序列的波形。
5.上机调试并打印或记录实验结果。
6.完成实验报告。
五、实验报告要求
1.简述实验原理及目的。
2.列出计算卷积的公式,画出程序框图,并列出实验程序清单(可略)(包括必要的程序说明)。
3.记录调试运行情况及所遇问题的解决方法。
4.给出实验结果,并对结果作出分析。
第三篇:实验七离散时间信号和系统
实验七 离散时间信号和系统
§7.1离散时间正弦信号
目的学习创建和分析离散时间正弦信号。
相关知识
离散时间正弦和余弦信号能够用复指数信号表示,即
1jn(eejn)21jnjnsinn()(ee)2jcosn()
基本题
1.考虑下面离散时间信号:xM[n]sin2Mn,假设NN=12。对于M=4,5,7
和10,在0n2N1区间上画出xM[n]。用stem创建这些图,并在图的各坐标轴上给出适当标注。每一个信号的基波周期是什么?由任意的整数M和N值,一般如何来确定信号的基波周期?务必考虑MN的情况。
§7.2离散时间信号时间变量的变换
目的主要研究离散时间信号的延时与反褶运算。
基本题
1.定义一个MATLAB向量nx是在3n7上的时间变量,而MATLAB向量x是信号x[n]在这些样本上的值,x[n]给出如下:
2,n01,n2x[n]1,n
33,n40,其余n
请正确定义x[n],用stem(nx,x)画出该离散时间序列。
2.定义MATLAB向量y1~y4,来表示下列离散时间信号:
y1[n]x[n2]
y2[n]x[n1]
y3[n]x[n]
y4[n]x[n1]
为此,应该定义y1~y4,关键是要正确定义标号向量ny1~ny4。首先应判断当变换到yi[n]时,一个给定的x[n]样本的变量时如何改变的。标号向量不必要跨于和nx相同的一组变量值,但至少都是11个样本长,并包含了与有关信号全部非零样本的变量值。
§7.3离散时间系统的性质
目的懂得如何来证明一个系统满足或不满足某一给定性质。
相关知识
本课程研究的离散时间系统通常是用几个性质来表征的,如线性、时不变、稳定性、因果性及可逆性等。
基本题
1.系统y[n]sin2x[n]不是线性的。利用信号x1[n][n]和x2[n]2[n]来证明该系统是如何违反线性性质的。
2.系统y[n]x[n]x[n1]不是因果的。利用信号x[n]u[n]证明它。定义MATLAB向量x和y分别代表5n9上的输入和6n9上的输出。
中等题
3.系统y[n]logx[n]不是稳定的。
§7.4实现一阶差分方程
目的学习求解自递归差分方程。
相关知识
离散时间系统往往用线性常系数差分方程来实现。两种最简单的差分方程是一阶移动平均y[n]x[n]bx[n1]和一阶自递归y[n]ay[n1]x[n],能用这些简单系统对许多实际系统进行建模或近似。例如,一阶自递归可以用于银行帐户建模,x[n]是第n次的存款或取款,这时y[n]就是第n次的结余,而a1r就是利率为r的复利。
深入题
1.写出一个函数y=diffeqn(a,x,yn1),该函数计算y[n]ay[n1]x[n]所描述的因果系统的输出y[n]。输入向量x包含0nN1内的x[n],yn1提供y[-1]的值。输出向量y包含0nN1内的y[n]。M文件的第一行应该读出function y=diffeqn(a,x,yn1)
提示:从y[-1]计算y[0]是自递归的第一步。在M文件中利用for循环从n0开始依次计算到较大n值的y[n]。
2.假设a1,y[1]0,而且仅关心0n30内的输出。利用这个函数计算x1[n][n]和x2[n]u[n]时的响应,用stem画出每个响应。
第四篇:实验二 离散时间信号与系统的Z变换分析
实验二 离散时间信号与系统的Z变换分析
一、实验目的
1、熟悉离散信号Z变换的原理及性质
2、熟悉常见信号的Z变换
3、了解正/反Z变换的MATLAB实现方法
4、了解离散信号的Z变换与其对应的理想抽样信号的傅氏变换和拉氏变换之间的关系
5、了解利用MATLAB实现离散系统的频率特性分析的方法
二、实验原理
1、正/反Z变换
Z变换分析法是分析离散时间信号与系统的重要手段。如果以时间间隔Ts对连续时间信号f(t)进行理想抽样,那么,所得的理想抽样信号f(t)为:
f(t)f(t)*Ts(t)f(t)*(tkTs)
k理想抽样信号f(t)的双边拉普拉斯变换F(s)为:
stF(s)f(t)*(tkTs)edtf(kTs)eksTs
kk若令f(kTs)f(k),zesTs,那么f(t)的双边拉普拉斯变换F(s)为:
F(s)kf(k)zkF(z)zesTs
则离散信号f(k)的Z变换定义为:
F(z)kf(k)zk
从上面关于Z变换的推导过程中可知,离散信号f(k)的Z变换F(z)与其对应的理想抽样信号f(t)的拉氏变换F(s)之间存在以下关系:
F(s)F(z)zesTs
同理,可以推出离散信号f(k)的Z变换F(z)和它对应的理想抽样信号f(t)的傅里叶变换之间的关系为 F(j)F(z)zejTs
如果已知信号的Z变换F(z),要求出所对应的原离散序列f(k),就需要进行反Z变换,反Z变换的定义为: f(k)F(z)z2j1k1dz 的所有极点的闭合积分路线。其中,C为包围F(z)z如下:
k1在MATLAB语言中有专门对信号进行正反Z变换的函数ztrans()和itrans()。其调用格式分别 F=ztrans(f)对f(n)进行Z变换,其结果为F(z) F=ztrans(f,v)
对f(n)进行Z变换,其结果为F(v) F=ztrans(f,u,v)对f(u)进行Z变换,其结果为F(v) f=itrans(F)对F(z)进行Z反变换,其结果为f(n) f=itrans(F,u)对F(z)进行Z反变换,其结果为f(u) f=itrans(F,v,u)
对F(v)进行Z反变换,其结果为f(u)注意: 在调用函数ztran()及iztran()之前,要用syms命令对所有需要用到的变量(如t,u,v,w)等进行说明,即要将这些变量说明成符号变量。
例①.用MATLAB求出离散序列f(k)(0.5)k(k)的Z变换 MATLAB程序如下:
syms k z f=0.5^k;%定义离散信号
Fz=ztrans(f)%对离散信号进行Z变换 运行结果如下:
Fz = 2*z/(2*z-1)例②.已知一离散信号的Z变换式为F(z)MATLAB程序如下:
syms k z Fz=2* z/(2*z-1);%定义Z变换表达式 fk=iztrans(Fz,k)%求反Z变换 运行结果如下:
fk =(1/2)^k
例③:求序列f(k)(k1)(t4)的Z变换.clc;clear all syms n
hn=sym('kroneckerDelta(n, 1)+ kroneckerDelta(n, 2)+ kroneckerDelta(n, 3)')Hz=ztrans(hn)Hz=simplify(Hz)
2z,求出它所对应的离散信号f(k)2z
12、离散系统的频率特性
同连续系统的系统函数H(s)类似,离散系统的系统函数H(z)也反映了系统本身固有的特性。对于离散系统来说,如果把其系统函数H(z)中的复变量z换成ejejTs(其中Ts),那么所得的函数H(ej)就是此离散系统的频率响应特性,即离散时间系统的频率响应为:
H(ej)H(ej)ej()H(z)zej j其中,H(e)称为离散系统的幅频特性,()称为系统的相频特性。同连续系统一样,离散时间系统的幅频特性也是频率的偶函数,相频特性也是频率的齐函数。
由于ej是频率的周期函数,所以离散系统的频率响应特性也是频率的周期函数,其周期为2,或者角频率周期为T2。实际上,这就是抽样系统的抽样频率,而其中的T则是系统的抽样周期。Ts频率响应呈现周期性是离散系统特性区别于连续系统特性的重要特点。因此,只要分析H(ej)在2范围内的情况,便可分析出系统的整个频率特性。
H(ej)函数来表示离散系统的频率响应特性,H(ej)表示幅频特性,而相频特性仍用()来表示。应该特别注意的是,虽然这里的变量仍然称为频率变量,但是它已经不是原来意义上的角频率概念,而实际上是表示角度的概念。我们称之为数字频率。它与原来角频率的关系为:Ts。也就是说,根据离散系统的系统函数H(z),令其中的zej,并且代入0~2范围内不同的频率值(实际上是角度值),就可以逐个计算出不同频率时的响应,求出离散系统的频率响应特性。再利用离散系统频率特性的周期性特点(周期为2),求出系统的整个频率特性。
离散系统的幅频特性曲线和相频特性曲线能够直观地反映出系统对不同频率的输入序列的处理情况。在函数H(ej)随的变换关系中,在=0附近,反映了系统对输入信号低频部分的处理情况,而在=附近,则反映了系统对输入信号高频部分的处理情况。
一般来说,分析离散系统频率响应特性就要绘制频率响应曲线,而这是相当麻烦的。虽然可以通过几何矢量法来定性画出频率响应特性曲线,但一般来说这也是很麻烦的。值得庆幸的是,MATLAB为我们提供了专门用于求解离散系统频率响应的函数freqz(),其调用格式如下:
[H,w]=freqz(B,A,N)其中,B和A分别是表示待分析的离散系统的系统函数的分子,分母多项式的向量,N为正整数,返回向量H则包含了离散系统频率响应函数H(e)在0~范围内的N个频率等分点的值。向量则包含0~范围内的N个频率等分点。在默认情况下N=512。
[H,w]=freqz(B,A,N,'whole')其中,B,A和N的意义同上,而返回向量H包含了频率响j应函数H(e)在0~2范围内N个频率等分点的值。
j由于调用freqz()函数只能求出离散系统频率响应的数值,不能直接绘制曲线图,因此,我们可以先用freqz()函数求出系统频率响应的值,然后再利用MATLAB的abs()和angle()函数以及plot()命令,即可绘制出系统在0~或0~2范围内的幅频特性和相频特性曲线。例①.若离散系统的系统函数为H(z)率响应H(e)的样值。
MATLAB程序如下:
A=[1 0];
%分母多项式系数向量 B=[1-0.5];
%分子多项式系数向量
[H,w]=freqz(B,A,10)%求出对应0~范围内10个频率点的频率响应样值 运行结果如下: H = jz0.5,请用MATLAB计算0~频率范围内10个等分点的频z 0.5000
0.5245 + 0.1545i 0.5955 + 0.2939i 0.7061 + 0.4045i 0.8455 + 0.4755i 1.0000 + 0.5000i 1.1545 + 0.4755i 1.2939 + 0.4045i 1.4045 + 0.2939i 1.4755 + 0.1545i w = 0 0.3142 0.6283 0.9425 1.2566 1.5708 1.8850 2.1991 2.5133 2.8274 例②.用MATLAB计算前面离散系统在0~2频率范围内200个频率等分点的频率响应值,并绘出相应的幅频特性和相频特性曲线。MATLAB程序如下:
A=[1 0];B=[1-0.5];[H,w]=freqz(B,A,200);[H,w]=freqz(B,A,200,'whole');%求出对应0~2范围内200个频率点的频率响%应样值 HF=abs(H);%求出幅频特性值 HX=angle(H);%求出相频特性值 subplot(2,1,1);plot(w,HF)%画出幅频特性曲线 subplot(2,1,2);plot(w,HX)%画出相频特性曲线
运行结果如下:
运行结果分析:从该系统的幅频特性曲线可以看出,该系统呈高通特性,是一阶高通滤波器。
三、实验内容
1. 求出下列离散序列的Z变换
k① f1(k)(1)cos(k2)(k)2k② f2(k)k(k1)(2 3)(k)③ f3(k)(k)(k5)
④ f4(k)k(k1)(k)(k5)
2. 已知下列单边离散序列的z变换表达式,求其对应的原离散序列。
z2z1①F1(z)
2zz2②F2(z)11111234 zzzz2(z23z6)③F3(z)
4zz(z2z1)④ F4(z)
(z1)(z2)(z3)3.已知离散系统的系统函数H(z)如下,请绘出系统的幅频和相频特性曲线,并说明系统的作用 ① H(z)4z4 12(z2)(z3)z21② H(z)
2z0.814.已知描述离散系统的差分方程为:
y(k)1.2y(k1)0.35y(k2)e(k)0.25e(k1)
请绘出系统的幅频和相频特性曲线,并说明系统的作用。
四、预习要求
1、熟悉正反z变换的意义及用MATLAB软件实现的方法
2、熟悉离散系统的频率响应特性及用MATLAB软件实现的方法
3、编写MATLAB程序
五、实验报告要求
1、简述实验目的及实验原理
2、计算相应z变换或反z变换的理论值,并与实验结果进行比较
3、记录离散系统的频率响应特性曲线,分析系统作用
4、写出程序清单
5、收获与建议
%参考程序 %三 1.① clc;clear all syms k z f1=0.5^k*cos(k*pi/2);%定义离散信号 Fz1=ztrans(f1)%对离散信号进行Z变换 % 实验二 1.②
f2=k*(k-1)*(2/3)^k;%定义离散信号 Fz2=ztrans(f2)%对离散信号进行Z变换 % 实验二 1.③
f3=sym('kroneckerDelta(n, 1)+ kroneckerDelta(n, 2)+ kroneckerDelta(n, 3)')Fz3=ztrans(f3)Fz3=simplify(Fz3)% 实验二 1.④
f4=k*(k-1)*sym('kroneckerDelta(k, 1)+ kroneckerDelta(k, 2)+ kroneckerDelta(k, 3)');%定义离散信号 Fz4=ztrans(f4)Fz4=simplify(Fz4)
第五篇:DSP实验5利用SPTool工具分析离散时间信号
实验5 利用SPTool工具分析离散时间信号
目标:利用sptool工具观察信号波形、频谱和滤波。
要求:
1.系统采样率2048,产生噪声信号,观察信号波形和频谱;
设计低通滤波器去除高频分量,观察滤波后的信号波形和频谱。
注:噪声产生可用randn命令
2.系统采样率2048Hz,产生300Hz、500Hz和800Hz的合成正弦波,系统包含高斯噪声信号,观察总的信号波形和频谱;设计滤波器提取500Hz分量,观察滤波后的信号波形和频谱。调整各信号的频率分量以及噪声的幅值,重复上面的步骤。