您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 常见离散信号产生和实现实验
实验1常见离散信号产生和实现一、实验目的1、加深对常用离散信号的理解;2、熟悉使用MATLAB在时域中产生一些基本的离散时间信号。二、实验原理MATLAB语言提供了一系列函数用来产生信号,如exp,sin,cos,square,sawtooth,ones,zeros等函数。1.基本信号序列1)单位抽样序列01)(n00nn程序:n=-10:20;%生成一个从-10到20的序列u=[zeros(1,10)1zeros(1,20)];%生成一个前10位为0,第十一位为1,后20位为0的矩阵stem(n,u);%画出n为横轴,u为纵轴的序列xlabel('Timeindexn');ylabel('Amplitude');%添上xy轴的标签title('UnitSampleSequence');%图表的标签axis([-102001.2]);%规定横轴,纵轴的显示范围图形:如果)(n在时间轴上延迟了k个单位,得到)(kn即:01)(kn0nkn程序:n=-10:20;u=[zeros(1,15)1zeros(1,15)];stem(n,u);xlabel('Timeindexn');ylabel('Amplitude');title('UnitSampleSequence');axis([-102001.2]);图形:2)单位阶跃序列01)(nu00nn程序:n=-10:20;x=[zeros(1,10),ones(1,21)];stem(n,x);图形:3)实指数序列Rananxn,)(程序:a1=1.1;a2=0.9;a3=-1.1;a4=-0.9;n=[-5:15];x1=(a1.^n);x2=(a2.^n);x3=(a3.^n);x4=(a4.^n);subplot(2,2,1);stem(n,x1,'.k');title('a1');axis([-5,15,-0.5,5]);subplot(2,2,2);stem(n,x2,'.k');title('0a1');axis([-5,15,-0.2,1.2]);subplot(2,2,3);stem(n,x3,'.k');title('a-1');axis([-5,15,-6,4]);subplot(2,2,4);stem(n,x4,'.k');title('-1a0');axis([-5,15,-1,1.2]);图形:4)复指数序列nenxnj)()(程序:n=0:10;lu=0.2;w0=pi;x=exp((lu+j*w0)*n);stem(n,x);xlabel('Timeindexn');ylabel('Amplitude');title('UnitSampleSequence');axistight图形:5)随机序列程序:x=rand(1,20);stem(x);xlabel('Timeindexn');ylabel('Amplitude');title('UnitSampleSequence');axistight图形:基本周期波形1)方波程序:t=0:0.1*pi:6*pi;%定义t为从0开始,间距为0.1pi,截止为6pi的序列y=square(t);%由函数生成方波axis([07*pi-1.51.5]);%规定尺度距离plot(t,y);%画出横轴为t纵轴为y的方波函数xlabel(‘时间t’);%为x轴添加标签ylabel(‘幅度y’);%为y轴添加标签axis([02002])图形:2)正弦波)/2sin()(FsfnAnx程序:t=0:0.1:15;A=2;x=A*sin(0.7*pi*t+0.5);plot(t,x);xlabel('Timeindext');ylabel('Amplitudex');axis([02*pi-33])title('正弦波')图形:3)锯齿波程序:Fs=10000;t=0:1/Fs:2;x=sawtooth(2*pi*40*t);plot(t,x);xlabel('Timeindext');ylabel('Amplitudex');axis([00.2-22])title('锯齿波')图形:2.基本非周期波形程序:t=0:1/1000:2;x=chirp(t,0.1,80);plot(t,x);xlabel('Timeindext');ylabel('Amplitudex');specgram(x,256,100,256,250);title('基本非周期波形')图形:3.sinc信号程序:t=linspace(-5,5);x=sinc(t);plot(t,x);xlabel('Timeindext');ylabel('Amplitudex');title('sinc信号')图形:4.序列的操作1)信号加x(n)=x1(n)+x2(n)MATLAB实现:x=x1+x2;注意:x1和x2序列应该具有相同的长度,位置对应,才能相加。2)信号乘x(n)=x1(n)*x2(n)MATLAB实现:x=x1.*x2;%数组乘法程序:w0=pi/20;a=1.05;n1=[-20:20];n2=[-20:20];subplot(2,2,1);stem(n1,sin(w0.*n1),'.k');title('x1(n)');axis([-20,20,-1,3]);subplot(2,2,2);stem(n2,a.^n2,'.k');title('x2(n)');axis([-20,20,-1,3]);n=[min(min(n1),min(n2));max(max(n1),max(n2))];x1=zeros(1,length(n));x2=zeros(1,length(n));x1=sin(w0.*n1);x2=a.^n2;y1=x1+x2;y2=x1.*x2;subplot(2,2,3);stem(n1,y1,'.k');title('y1(n)');axis([-20,20,-1,3]);subplot(2,2,4);stem(n2,y2,'.k');title('y2(n)');axis([-20,20,-1,3]);图形:3)改变比例y(n)=k*x(n)MATLAB实现:y=k*x;4)折叠y(n)=x(-n);程序:x1=[1,2,3,4,2,3,4,5];y1=x1;y2=fliplr(x1);subplot(2,1,2);stem(x1,y1,'.r');title('x(-n)');subplot(2,1,1);stem(x1,y2,'.r');title('x(n)');图形:5)抽样和21)(nnnnxy程序:N=input('N=')n=1;sum=0;whilen=Nxn=[1,2,3,4;2,3,4,5];sum=sum+xn;n=n+1;end运行结果:N=20Sum=204060804060801006)抽样积21)(nnnnxy程序:a=input('a=');N=input('N=');y=1;n=0;whilen=N-1;xn=a.^n;y=xn*y;n=n+1;end运行结果:a=5N=30y=1.1271e+3407)信号能量2|)(|nnxEx程序:a=input('a=');N=input('N=');sum=0;n=0;whilen=N-1;xn=a.^n;e=abs(xn).^2sum=0+e;n=n+1;endE=sum运行结果:a=6N=20E=3.7132e+0298)信号功率210|)(|1NnnxNPxMATLAB实现:Px=sum(abs(x).^2)/N;三、实验内容绘出信号,当、时、、时的信号实部和虚部图;当时呢?此时信号周期为多少?程序:z=input('z=')n=1:20;x=exp(z*n);stem(n,x)z=-(1/12)+pi/6*i图形:z=(1/12)+pi/6*I图形:z=2+pi/6*i图形:z=1/12,图形:z=pi/6*i图形:周期T=12四.小结复指数序列X(n)=e.^[(a+jw)n]=cos(nw).*[e.^(an)]+jsin(nw).*[e.^(an)]最常用的一种形式X(n)=e.^(jwn)=cos(nw)+jsin(nw)若用极坐标表示,则用幅度和相角复指数序列e.^(jwn)(w=pi/15)幅度特性和相位特性的MATLAB实现程序:clcw=pi/15;n=[-15:15];x=exp(j.*w.*n);subplot(2,1,1);stem(n,abs(x),'.k');title('幅度特');axis([-15,15,-0.2,1.5]);subplot(2,1,2);stem(n,angle(x),'.k');title('相位特性');通过本实验的学习基本上掌握了使用MATLAB在时域中产生一些基本的离散时间信号,使我加对常用离散信号的理解.(一)离散信号的产生离散信号的图形显示使用stem指令。1.编写MATLAB程序,产生下列典型脉冲序列。(1)单位脉冲序列:起点n0,终点nf,在ns处有一单位脉冲。(2)单位阶跃序列:起点n0,终点nf,在ns前为0,在ns处及以后均为1(n0=ns=nf)。(3)实指数序列:nx)75.0(3(4)复指数序列:njex)7.02.0(4其MATLAB程序如下:n0=0;nf=10;ns=3;n1=n0:nf;x1=[(n1-ns)==0];%单位脉冲序列n2=n0:nf;x2=[(n2-ns)=0];%单位阶跃序列n3=n0:nf;x3=(0.75).^n3;%实指数序列n4=n0:nf;x4=exp((-0.2+0.7j)*n4);%复指数冲序列subplot(2,2,1),stem(n1,x1);subplot(2,2,2),stem(n2,x2);subplot(2,2,3),stem(n3,x3);figuresubplot(2,2,1),stem(n4,real(x4));%注意subplot的变化subplot(2,2,2),stem(n4,imag(x4));subplot(2,2,3),stem(n4,abs(x4));subplot(2,2,4),stem(n4,angle(x4));(二)离散时间信号的卷积在MATLAB中,利用函数conv(x,h)可以实现两个有限长度序列的卷积,要注意conv函数是假定两个序列都从n=0开始的。1.用MATLAB编写卷积运算函数。function[y,ny]=conv_improve(x,nx,h,nh)%[x,nx]为第一个信号%[h,nh]为第二个信号%conv(x,h)可以实现两个有限长度序列的卷积ny1=nx(1)+nh(1);ny2=nx(length(x))+nh(length(h));ny=[ny1:ny2];y=conv(x,h);在命令窗口调用卷积函数。x=[340-2235];nx=[-3:3];h=[145601];nh=[N:N+5];N是你的学号最后两位,带入后求结果。结果为:
本文标题:常见离散信号产生和实现实验
链接地址:https://www.777doc.com/doc-4228334 .html