实验一、MATLAB编程基础及典型实例一、实验目的(1)熟悉MATLAB软件平台的使用;(2)熟悉MATLAB编程方法及常用语句;(3)掌握MATLAB的可视化绘图技术;(4)结合《信号与系统》的特点,编程实现常用信号及其运算。示例一:在两个信号进行加、减、相乘运算时,参于运算的两个向量要有相同的维数,并且它们的时间变量范围要相同,即要对齐。编制一个函数型m文件,实现这个功能。function[f1_new,f2_new,n]=duiqi(f1,n1,f2,n2)a=min(min(n1),min(n2));b=max(max(n1),max(n2));n=a:b;f1_new=zeros(1,length(n));f2_new=zeros(1,length(n));tem1=find((n=min(n1))&(n=max(n1))==1);f1_new(tem1)=f1;tem2=find((n=min(n2))&(n=max(n2))==1);f2_new(tem2)=f2;四、实验内容与步骤−2t(2)绘制信号x(t)=esin(t=0:0.1:30;23t)的曲线,t的范围在0~30s,取样时间间隔为0.1s。y=exp(-sqrt(2)*t).*sin(2*t/3);plot(t,y);(3)在n=[-10:10]范围产生离散序列:x(n)=⎧2n,−3⎨≤n≤3,并绘图。⎩0,Othern=-10:1:10;z1=((n+3)=0);z2=((n-3)=0);x=2*n.*(z1-z2);stem(n,x);(4)编程实现如下图所示的波形。t=-2:0.001:3;f1=((t=-1)&(t=1));f2=((t=-1)&(t=2));f=f1+f2;plot(t,f);axis([-2,3,0,3]);(5)设序列f1(k)={0,1,2,3,4,5},f2(k)={6,5,4,3,2,1,0}。↓↓k=0k=0利用duiqi.m函数,求add_f(k)=f1(k)-f2(k),pro_f(k)=f1(k)×f2(k),并以子图形式画出f1(k)、f2(k)、add_f(k)、pro_f(k)。f1=0:5;stem(n1,f1);subplot(2,2,3)f2=6:-1:0;xlabel('n1');stem(n,add_f);n1=-1:4;ylabel('f1');xlabel('n');n2=-5:1;gridon;ylabel('add-f(k)');[f1_new,f2_new,n]=duiqisubplot(2,2,2)gridon;(f1,n1,f2,n2);stem(n2,f2);subplot(2,2,4)add_f=f1_new+f2_new;xlabel('n2');stem(n,pro_f);pro_f=f1_new.*f2_new;ylabel('f2');xlabel('n');subplot(2,2,1)gridon;ylabel('pro-f(k)');gridon;五、实验报告要求(1)再调用某一函数文件时,该文件中除了输入、输出变量外的其它变量在调用函数结束后是否还存在?这些变量是全局还是局部变量?答:不存在,是局部变量。(2)设n=-10:0.2:20,你可以通过那些方法查看向量n的维数?经过关系运算y=(n=3)以后,y的维数是多少?y又等于什么?答:Length()函数或Workspace中的变量类型。维度不变,(3)通过MATLAB的帮助系统,学习fliplr函数的功能和使用方法。在此基础上,写出n能够产生如下图形的程序,其中x(n)=2,−4≤n≤4。n=-4:4;x1=2.^n;figure(1);stem(n,x1);x2=fliplr(x1);figure(2);stem(n,x2);实验二、连续时间系统的时域分析一、实验目的(1)深刻理解卷积运算,掌握离散线性卷积、连续线性卷积的计算方法;(2)加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;(3)掌握给定连续系统的冲击响应和阶跃响应。实例2:利用conv函数,编制一个函数文件dconv,其输出为两个序列卷积后的新序列以及与新序列对应的时间变量function[f,k]=dconv(f1,f2,k1,k2)f=conv(f1,f2);k_start=k1(1)+k2(1);k_end=length(f1)+length(f2)-2;k=k_start:(k_start+k_end);实例2:在dconv函数和(*)的基础上,编制一个函数文件cconv,利用离散卷积和来近似计算连续卷积积分。function[f,k]=cconv(f1,f2,k1,k2,td)f=td*conv(f1,f2);k_start=k1(1)+k2(1);k_end=length(f1)+length(f2)-2;k=k_start:td:(k_start+k_end*td);四、实验内容与步骤(2)(1)(1)(1)已知系统微分方程为y(t)+2y(t)+2y(t)=f(t),f(t)=ε(t)。计算系统的零状态响应y(t)、冲击响应δ(t)和阶跃响应g(t),并画出相应的图形。t=0:0.01:10;y3=step(sys,t);f=ones(1001,1);subplot(1,3,1)a=[1,2,2];plot(t,y1);b=[1,0];subplot(1,3,2)sys=tf(b,a);plot(t,y2);y1=lsim(sys,f,t);subplot(1,3,3)y2=impulse(sys,t);plot(t,y3);(2)用MATLAB计算如下连续列的卷积和,绘出它们的时域波形。f1(k)=⎧1,k=1⎪⎪2,k=0⎧1,−2≤k≤2⎨f2(k)=⎨⎪1,k=1⎩0,其它t=-6:6;z1=stepseq(-6,6,-1);z2=stepseq(-6,6,2);z3=delta(-6,6,0);f1=z1-z2+z3;z4=stepseq(-6,6,-2);z5=stepseq(-6,6,3);f2=z4-z5;[y,k]=dconv(f1,f2,t,t);stem(k,y);axis([-6,6,0,5])⎩0,其它(3)编程实现如下所示的两个波形;并利用cconv函数计算这两个信号的卷积、画出卷积后的波形。td=0.01;t=-5:td:5;z1=((t+1)=0);z2=((t-1)=0);y1=2*(z1-z2);z3=((t+2)=0);z4=((t-2)=0);y2=z3-z4;[y,k]=cconv(y1,y2,t,t,td);plot(k,y)axis([-10,10,0,5]);五、实验报告要求(1)在“实验内容与步骤”(1),零状态响应和阶跃响应是否相同?为什么?答:相同,因为零状态响应和阶跃响应在t0时都没有输入。(2)两序列进行卷积后得到的新序列,说明新序列在时域长度、时域区间上与与原来两序列的关系。答:新序列的长度为原两个序列长度之和。区间为原两个序列的区间首尾相加。实验三、连续时间系统的频域分析一、实验目的(1)理解周期信号的傅里叶分解,掌握傅里叶系数的计算方法;(2)深刻理解和掌握非周期信号的傅里叶变换及其计算方法;(3)熟悉傅里叶变换的性质,并能应用其性质实现信号的幅度调制;(4)理解连续时间系统的频域分析原理和方法,掌握连续系统的频率响应求解方法,并画出相应的幅频、相频响应曲线。四、实验内容及步骤(1)周期性三角波如下图所示,计算其傅里叶级数系数,演示其有限项级数逼近并绘图。T=2;w=2*pi/T;a0=quadl(@singftr,-1,1)*2/T;N=10;an=zeros(1,N);bn=zeros(1,N);fork=1:Nan(k)=quadl(@ftrcos,-1,1,[],[],k,w)*2/T;bn(k)=quadl(@ftrsin,-1,1,[],[],k,w)*2/T;end;n=1:1:N;figure(1);subplot(1,2,1);stem(n,an,'-o');gridon;subplot(1,2,2);stem(n,bn,'-o');gridon;t=-3:0.01:3;x=pulstran(t+0.5,-3:2:3,'tripuls',1,1);figure(2);subplot(6,2,1);plot(t,x);axis([-3,3,-1,2]);gridon;subplot(6,2,2);plot(t,a0/2);gridon;wave=a0/2;fork=1:10wave=wave+an(k)*cos(k*w*t)+bn(k)*sin(k*w*t);subplot(6,2,k+2);plot(t,wave);gridon;end2(2)计算如下所示的信号(cos(tπR=0.005;t=-2:R:2;f=cos(pi*t/2);%f=(abs(t)=1);))的傅里叶变换,并验证尺度变换和时移变换性质。subplot(2,1,1);plot(t,sf);xlabel('t');ylabel('sf(t)');gridon;subplot(2,1,2);plot(w,SFudu);xlabel('w');ylabel('SF9jw)');gridon;w1=40;N=1000;k=-N:N;w=k*w1/N;F=f*exp(-j*t'*w)*R;Fudu=real(F);figure(1);subplot(2,1,1);plot(t,f);xlabel('t');ylabel('f(t)');gridon;subplot(2,1,2);plot(w,Fudu);xlabel('w');ylabel('F(jw)');gridon;on;sf=cos(pi*t/4);w1=40;N=1000;k=-N:N;w=k*w1/N;SF=sf*exp(-j*t'*w)*R;SFudu=real(SF);figure(2);mf=f.*cos(10*pi*t);figure(3);subplot(3,1,1);plot(t,cos(10*pi*t));ylabel('y(t)=cos(10*pi*t)');gridon;subplot(3,1,2);plot(t,mf);ylabel('f1(t)=f(t)*cos(10*pi*t)');gridMF=mf*exp(-j*t'*w)*R;MFudu=real(MF);subplot(3,1,3);plot(w,MFudu);xlabel('w');ylabel('MF(jw)');gridon;(3)设信号f(t)为中心为0,范围从-1到1,最大幅值为1的三角波,载波是频率为10Hz的余弦信号cos(20πt),用MATLAB实现调幅信号,并观察信号和调幅信号频谱。R=0.005;t=-2:R:2;z1=((t+1)=0);z2=((t-1)=0);g=z1-z2;f=t.*g;%f=(abs(t)=1);w1=40;N=1000;k=-N:N;w=k*w1/N;F=f*exp(-j*t'*w)*R;Fudu=real(F);on;figure(1);subplot(2,1,1);plot(t,f);xlabel('t');ylabel('f(t)');gridon;subplot(2,1,2);plot(w,Fudu);xlabel('w');ylabel('F(jw)');gridon;mf=f.*cos(10*pi*t);figure(2);subplot(3,1,1);plot(t,cos(10*pi*t));ylabel('y(t)=cos(10*pi*t)');gridon;subplot(3,1,2);plot(t,mf);ylabel('f1(t)=f(t)*cos(10*pi*t)');gridMF=mf*ex