n=m+n0;y=x 4.翻褶
序列翻褶y(n)?x(?n)的生成函数sigfold.m可以用下面的MATLAB程序实现。 function [y,n]=sigfold(x,n) y=fliplr(x);n=-fliplr(n) 5.卷积和
求卷积和直接采用MATLAB中的函数conv,即y=conv(x,h);它默认序列从n=0开始。但是如果序列是从一负值开始,即
?x(n):nx1?n?nx2? ?h(n):nh1?n?nh2?其中nx1<0或nh1<0,或两者同时为负,这样就不能直接采用conv函数。其卷积结果序列为?y(n):nx1?nh1?n?nx2?nh2?,这样就可构成一个新的卷积函数conv_m,求出带下标的序列卷积。
function [y,ny]=conv_m(x,nx,h,nh)
ny1=nx(1)+nh(1);ny2=nx(length(x))+nh(length(h)); ny=[ny1:ny2]; y=conv(x,h)
三、实验内容
1.已知序列f?k???2,3,1,2,3,4,3,1?,对应的k值范围-3?k?4,绘出以下信号的图形:f1(k)?f(k?2);f2(k)?f(?k);f3(k)?f(?k?2)2.已知两离散序列分别f1?k????2,?1,0,1,2?f2?k???1,1,1?,求出两序列的和
f1?k??f2?k?,两个序列的乘积f1?k??f2?k?,并绘出f1?k?,f2?k?及f1?k??f2?k?,f1?k??f2?k?的波形。
3.已知两离散序列分别f1?k????2,?1,0,1,2?和f1?k??f2?k?,并绘出波形。
4.已知序列x(n)?(0.4)nu(n),y(n)?u(n)?u(n?4),求两序列的线性卷积和h(n),并绘出x(n),y(n)以及两序列的线性卷积和h(n)的波形。
f2?k???1,1,1?,求出两序列的线性卷积
四、实验要求
1.要求熟练掌握建立脚本文件来实现实验内容。
2.在实验内容是实现时,要熟练掌握函数文本的建立和调用。 3.在实验报告中写出完整的自编程序,并给出实验结果。
4.在绘制图形时要求图形的完整性,每个图形都要有图标标示。
5.在绘制图形时,坐标最好要一致,以方便查看对应点的运算及卷积和长度的变化。
五、思考题
1.长度不等的序列能否实现加法和乘法? 2.如何实现序列的减法和除法,试编制程序。 3.实现序列翻褶的方法还有那些?
实验3 离散系统的MATLAB实现
一、实验目的
1.加深对离散系统单位抽样响应和差分方程的理解 2.掌握MATLAB对离散系统的实现方法
二、实验方法与示例
1.已知系统单位抽样响应的MATLAB实现
例3–1: 设线性移不变系统的抽样响应h(n)?(0.9)u(n),输入序列
nx(n)?u(n?)y(n)。 u(?n,求系统的输出1解:系统的输出y(n)为输入x(n)与系统的单位抽样响应h(n)的卷积,即y(n)=x(n)* h(n),可直接采用conv_m函数求输出序列。程序清单如下。
n=-5:50;x=stepseq(0,-5,50)-stepseq(10,-5,50); h=((0.9).^n).*stepseq(0,-5,50);
subplot(3,1,1);stem(n,x);axis([-5,50,0,2]);ylabel('x(n)'); subplot(3,1,2);stem(n,h);axis([-5,50,0,2]);ylabel('h(n)');
[y,ny]=conv_m(x,n,h,n);subplot(3,1,3);stem(ny,y);axis([-5,50,0,8]); xlabel('n');ylabel('y(n)');
程序运行结果如图3–1所示。
2x(n)10-5205101520253035404550h(n)10-58605101520253035404550y(n)420-505101520n253035404550
图3–1 线性移不变系统的输出图
2.线性定常系统的系统函数模型的表示与转换 (1)LSI系统的系统函数常用模型
b0sm?b1sm?1???bm1)多项式模型:G?s?? nn?1a0s?a1s???an;den??a0,a1,?,an?来表示系统函数 用num??b0,b1,?,bm?2)零极点模型:G?s??K?s?z1??s?z2???s?zm?
?s?p1??s?p2???s?pn?用Z??z1,z2,?,zm?;P??p1,p2,?,pn?;k?K来表示系统函数 3)部分分式模型:G?s??ri?k?s? ?s?pi?11n用r??r1,r2,?,rn?;P??p1,p2,?,pn?;k??k0,k1,?,km?n?来表示系统函数
(2)线性定常系统传递函数模型转换格式
1)系统函数多项式形式转换为零极点形式:
[z,p,k]=tf2zp(num,den)
2)系统函数多项式形式和部分分式之间的相互转换:
[num,den]=residue(r,p,k) [r,p,k]=residue(num,den)
3)系统函数零极点形式转换为多项式形式:
[num,den]=ze2tf(z,p,k)
3.已知系统线性常系数差分方程或系统函数的MATLAB实现
LSI系统的差分方程或系统函数可以写成如下形式:
M bkz?kNM?0 H(z)?kNaky(n?k)?bmx(n?m) akz?kk?0m?0k?0
在 MATLAB 中,filter 函数专用来在给定差分方程或系统函数系数和输入时求差分方程的数值解,函数最基本的使用方法为:
y=filter(b, a, x)或者 [y,zf] = filter(b,a,X,zi)
其中b= [b0, b1, …, bM]; a= [a0, a1, …, aN];x 为输入序列组,zi为初始条件。
????例3–2:设线性时不变系统的差分方程为
?ay(n?k)??bx(n?k)其中
kkk?0k?0NMb=1,
a=[1,-1,0.9],零初始状态。输入序列x(n)=u(n),求系统的输出y(n)。
解:在MATLAB中用差分方程的系数b,a来表示一个系统。程序清单如下。
N=100;n=0:N-1; b=1;
a=[1,-1,0.9];
x=[n>=0];y=filter(b,a,x); subplot 211
stem(n,x, '.');axis([0,N,-1,3]);ylabel('x(n)'); subplot 212
stem(n,y,'.');axis([0,N,-1,3]);ylabel('y(n)'); 程序运行结果如图3–2所示。
32x(n)10-1010203040506070809010032y(n)10-10102030405060708090100图3–2 线性移不变系统的输出
三、实验内容
1.设线性移不变系统为两个子系统级联构成,两个抽样子系统单位抽样响应分别为
h1(n)?(0.8)nu(n),h2(n)??(n)??(n?4),输入序列x(n)=u(n),求系统的输出y(n)。
2. 设线性移不变系统的差分方程为:
y(n)?0.7y(n?1)?0.45y(n?2)?0.6y(n?3)?0.8x(n)?0.44x(n?1)?0.36x(n?2)?0.02x(n?3)
输入序列分别为x1(n)=δ(n), x2(n)=R30(n)时求系统的输出y1(n)和y2(n)。
2.24?2.49z?1?2.24z?23.设线性移不变系统的系统函数为:H(z)?,判定此系统的线?1?21?0.4z?0.75z性特性。(叠加定理:两信号加权和的输出是否等于输出的加权和?)
四、实验要求
1.在实验报告中写出完整的自编程序,并给出实验结果和分析。 2.在绘制图形时要求图形的完整性,每个图形都要有图标标示。
五、思考题
1.对于一个离散系统,在MATLAB中有几种表示方法,分别是什么? 2.实验内容1中若系统为两个子系统并联构成,求系统的输出?
实验4 离散系统的Z域分析
一、实验目的
1.加深对离散系统的分析方法的掌握
2.掌握使用MATLAB绘制离散系统的零极图的方法
3.掌握使用MATLAB绘制单位冲激响应和幅频响应的方法 4.掌握使用MATLAB进行Z域的部分分式展开的方法 5.掌握使用MATLAB进行Z变换和Z反变换的方法
二、实验方法与示例
1.MATLAB几个信号处理工具箱函数 (1)residuez:求极点留数分解
离散系统的输出 Y(z)=X(z)H(z)=B(z)/A(z),它必然是z的有理分式:
B(z)B(1)?B(2)z?1???B(N)z?(M?1)?B(N?1)z?MY(z)??A(z)A(1)?A(2)z?1???A(N)z?(N?1)A(N?1)z?N
r(1)r(2)r(N)??????k(1)?k(2)z?1???1?1?11?p(1)z1?p(2)z1?p(N)z从而得出其时域信号为:
y(n)?r(1)p(1)nu(n)?r(2)p(2)nu(n)???r(N)p(N)nu(n)?k(1)?(n)?k(2)?(n?1)??
其中k是当M≥N时的直接项,即有限序列,而其余的都是无限序列。其中的r,p,k向量可以由下列语句求得
[r,p,k]=residuez(b,a) 式中,b和b分别为F?z?的分子多项式和分母多项式的系数向量,r为部分分式的系数向量,p为极点向量,k为多项式的系数向量。 (2).impz:求H(z)的Z反变换h(n)
[h,T]=impz(B,A,N)
h为存放h(n)的列向量,时间变量N存放在列向量T中,当N为标量时,表示T=[0:N-1]?,计算h(n),n=0,1,2,…,N-1;当N为向量时,T=N,仅计算N指定的整数点上的h(n)。 (3)freqz:求数字滤波器H(z)的频率响应函数
H=freqz[B,A,w] ① [H,w]=freqz[B,A,M] ②
①计算由向量w指定的数字频率点上数字滤波器H(z)的频率响应,结果存在H向量中。 ②计算出M个频率点上的频率响应,存放在H向量中,M个频率存放在w向量中,freqz函数自动将这M个频率点均匀设置在频率范围[0,π]之间。
若缺省w和M时,函数自动选取512个频率点计算。不带输出向量的freqz函数将自动绘制幅频和相频曲线。
(4)zplane:绘制H(z)的零极点图
zplane(b,a)
绘制出向量b(分子多项式系数)中的零点(以符号“о”表示)和向量a(分母多项式系数)