资源描述:
《matlab基础与应用教程(人民邮电出版社-蔡旭辉)第七章a》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第7章MATLAB在数字信号处理中的应用17.1时域离散信号的产生及时域处理时域离散信号用x(n)表示,时间变量n(表示采样位置)只能取整数。因此,x(n)是一个离散序列,以后简称序列。用一个向量x不足以表示序列值x(n)。必须再用另一个等长的定位时间变量n。x和n同时使用才能完整地表示一个序列,由于n序列是按整数递增的,可简单地用其初值ns决定,因为它的终值nf取决于ns和x的长度length(x),故可写成:n=[ns:nf]或n=[ns:nslength(x)1]2单位脉冲序列δ(n-n0)的生成函数impseqf
2、unction[x,n]=impseq(n0,ns,nf)n=[ns:nf];x=[(n-n0)==0];单位阶跃序列u(n-n0)的生成函数stepseqfunction[x,n]=stepseq(n0,ns,nf)n=[ns:nf];x=[(n-n0)>=0];P173表7.13例7.1序列的相加和相乘给出两个序列x1(n)和x2(n)。x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6];x2=[2,2,0,0,0,-2,-2];n2=[2:8];要求它们的和ya及乘积yp。解:编程的思路是把序列长度延拓到覆
3、盖n1和n2的范围,这样才能把两序列的时间变量对应起来,然后进行对应元素的运算。4%第七章例7.1q701离散信号序列的相加和相乘x1=[0,1,2,3,4,3,2,1,0];ns1=-2;%给定x1及ns1x2=[2,2,0,0,0,-2,-2];ns2=2;%给定x2及ns2nf1=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(fi
4、nd((ny>=ns1)&(ny<=nf1)==1))=x1%给xa1赋值x1xa2(find((ny>=ns2)&(ny<=nf2)==1))=x2%给xa2赋值x2ya=xa1+xa2%序列相加yp=xa1.*xa2%序列相乘subplot(4,1,1),stem(ny,xa1,'.')%绘图subplot(4,1,2),stem(ny,xa2,'.')line([ny(1),ny(end)],[0,0])%画x轴subplot(4,1,3),stem(ny,ya,'.')line([ny(1),ny(end)],[0,0
5、])%画x轴subplot(4,1,4),stem(ny,yp,'.')line([ny(1),ny(end)],[0,0])%画x轴5ny=-2-1012345678xa1=01234321000xa2=000022000-2-2ya=012365210-2-2yp=000086000006例7.2序列的合成和截取用例6.13的结果编写产生矩形序列RN(n)的程序。序列起点为n0,矩形序列起点为n1,长度为N(n0,n1,N由键盘输入)。并用它截取一个复正弦序列exp(jπn/8),最后画出波形。解:建模:矩形序列可
6、看成两个阶跃序列之差。即用MATLAB逻辑关系运算产生矩形序列x2(n)。而用它截取任何序列相当于元素群相乘x2.*x,也称为加窗运算。序列的合成和截取就是相加和相乘。7%第七章例7.2程序q702离散信号序列的相加和相乘clear;closealln0=input('输入序列起点:n0=');%书上取-6N=input('输入序列长度:N=');%书上取15n1=input('输入位移:n1=');%书上取3n=n0:n1+N+5;%生成自变量数组u=[(n-n1)>=0];%产生单位阶跃序列(u(n-n1))x1=[(n-
7、n1)>=0]-[(n-n1-N)>=0];%用阶跃序列差产生矩形序列x2=[(n>=n1)&(n<(N+n1))];%用逻辑式产生矩形序列x3=exp(j*n*pi/8).*x2;%对复正弦序列加矩形窗(元素群乘)subplot(2,2,1);stem(n,x1,'.');xlabel('n');ylabel('x1(n)');%标注axis([n0,max(n),0,1]);%定坐标范围subplot(2,2,3);stem(n,x2,'.');xlabel('n');ylabel('x2(n)');%标注axis([n0
8、,max(n),0,1]);%定坐标范围8subplot(2,2,2);stem(n,real(x3),'.');xlabel('n');ylabel('x3(n)的实部');%标注line([n0,max(n)],[0,0]);%画横轴axis([n0,max(n),-1,