实验一离散时间信号分析一、实验目的1.初步掌握Matlab的使用,掌握编写M文件和函数文件2.掌握各种常用序列的表达,理解其数学表达式和波形表示之间的关系。3.掌握生成及绘制数字信号波形的方法。4.掌握序列的基本运算及实现方法。5.研究信号采样时采样定理的应用问题。二、实验原理1.序列的基本概念离散时间信号在数学上可用时间序列{x(n)}来表示,其中x(n)代表序列的第n个数字,n代表时间的序列,n的取值范围为-∞n+∞的整数,n取其它值x(n)没有意义。离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号xa(t)进行等间隔采样,采样间隔为T,得到{x(nT)}a一个有序的数字序列就是离散时间信号,简称序列。2.常用序列常用序列有:单位脉冲序列(单位抽样)δ(n)、单位阶跃序列u(n)、矩形序列RN(n)、实指数序列、复指数序列、正弦型序列等。3.序列的基本运算序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。4.序列的卷积运算y(n)=∑()()=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(n-m)。当n为正数时,右移n位;当n为负数时,左移n位。(3)相乘:将h(n-m)和x(m)的对应点值相乘。(4)求和:将以上所有对应点的乘积累加起来,即得y(n)。三、主要实验仪器及材料PC机、Matlab7.0。四、实验内容1.知识准备认真复习以上基础理论,理解本实验所用到的实验原理。2.离散时间信号(序列)的产生利用MATLAB产生和绘制下列有限长序列:(1)单位脉冲序列δ(n),单位阶跃序列u(n),矩形序列R8(n)(2)在一幅图上绘出曲线x1(t)=Asin(π5t+π3);x2(t)=Acos(t-π3);x3(t)=2sin(3t)cos(2t-π3).(3)绘出正弦衰减信号:x2(t)=Aeαtsi(2πft),A=2,α=0.5,f=2Hz(4)绘出谐波信号:x3(t)=A1sin(2πft)+A2sin(2πf2t)+A3sin(2πf3t);A1=1,A2=0.5,A3=0.2,f=2Hz.3.序列的运算生成下列序列:x(n)=δ(n)+2δ(n-1)+3δ(n-2)+4δ(n-3)+5δ(n-4)h(n)=δ(n)+2δ(n-1)+δ(n-2)+2δ(n-3)(1)利用MATLAB编程完成上述两序列的卷积,并绘制运算后序列的波形。(2)编写一个完成卷积的函数,输入是两个序列,输出是结果。4.采样定理的研究分别令采样周期Ts为不同值,绘出不同采样周期下x(t)=sin(t)的频谱(直接用FFT函数),观察频谱混叠现象,和防止混叠的采样周期。5.上机实验并完成实验报告。请将实验报告保存为压缩文件(.rar,或.zip格式),包括源程序(.M文件)和文档(.doc),统一名为“xxx——实验x.rar”或“xxx——实验x.zip”五、实验结果1.1.1单位脉冲序列δ(n)源程序:function[x,n]=impseq(n0,n1,n2)%产生x(n)=δ(n-n0);n1=n0=n2if((n0n1)|(n0n2)|(n1n2))error('参数不满足n1=n0=n2')endn=n1:n2;x=[(n-n0)==0];%x=[zeros(1,n0-n1),1,zeros(1,(n2-n0))]stem(n,x);n0=0;n1=-3;n2=3;impseq(n0,n1,n2);1.1.2.单位阶跃序列u(n)源程序:function[x,n]=stepseq(n0,n1,n2)%产生x(n)=u(n-n0);n1n0n2if((n0n1)|(n0n2)|(n1n2))error('参数不满足n1n0n2')endn=n1:n2x=[(n-n0)=0]%x=[zeros(1,(n0-n1)),ones(1,(n2-n1))]stem(n,x);n0=0;n1=-3;n2=3;stepseq(n0,n1,n2);1.1.3.矩形序列源程序:function[x,n]=R(N,ns,nf)%产生序列x(n)=u(n-n0)-u(n-n0-N)n=ns:nf;np=0;x=stepseq(np,ns,nf)-stepseq(N,ns,nf);%x=[0=n7]stem(n,x);N=8;ns=-2;nf=10;x=R(N,ns,nf)1.2在同一图中绘制x1(t),x2(t),x3(t)源程序:function[x1,x2,x3,t]=X1(A,a,b)t=a:0.001:b;abif(a=b)error('参数不满足ab')endx1=A.*sin(pi./5.*t+pi./3);x2=A.*cos(t-pi./3);x3=2.*sin(3.*t).*cos(2.*t-pi./3);plot(t,x1,x2,x3)A=2;a=-pi;b=pi;[x1,x2,x3]=X1(A,a,b);1.3正弦衰减信号源程序:function[x,t]=X2(A,a,f,t1,t2)%产生函数x(t)=e^(-at)sin(2pift),t1t2if(t1t2)error('参数不满足t1t2')endt=t1:0.01:t2;x=exp(-a.*t).*sin(2.*pi.*f.*t);plot(t,x)A=2;a=0.5;f=2;t1=-2;t2=2;x=X2(A,a,f,t1,t2)1.4谐波信号源程序:function[x,t]=X3(A1,A2,A3,f,t1,t2)%产生x3(t)=A1.*sin(2.*pi.*f.*t)+A2.*sin(2.*pi.*f.*2.*t)+A3.*sin(2.*pi.*f.*3.*%t),t1t2if(t1t2)error('参数不满足t1t2')endt=t1:0.0001:t2;x=A1.*sin(2.*pi.*f.*t)+A2.*sin(2.*pi.*f.*2.*t)+A3.*sin(2.*pi.*f.*3.*t);plot(t,x)A1=1;A2=0.5;A3=0.2;f=2;t1=-1;t2=1;x=X3(A1,A2,A3,f,t1,t2);2矩阵的运算源程序:function[y,ny]=convwthn(x,nx,h,nh)ny1=nx(1)+nh(1);ny2=nx(end)+nh(end)%x*h在nx(1)+nh(1)到nx(end)+nh(end)之间取值;%nx(1)、nh(1)为最小下标,end为最大下标;y=conv(x,h);ny=ny1:ny2;stem(ny,y);endx=[1,2,3,4,5];nx=0:4;h=[1,2,1,2];nh=0:3;[y,ny]=convwthn(x,nx,h,nh);3采样定理的研究(1)fs=0.5(2)fs=π/2(3)fs=2(4)fs=10由图可以看出:当采样周期T=π/2时正弦函数x=sin(t)不产生混叠。源程序:function[]=sample(fs,N)T=1/fs;%采样周期n=0:N-1;t=n*T;%采样时间点x=sin(t);%生成正弦信号subplot(1,2,1)plot(t,x);%画正弦信号的时域波形y=fft(x,N);%fft变换mag=sqrt(y.*conj(y));%求幅值f=(0:N-1)*fs/N;%进行对应的频率转换subplot(1,2,2);plot(f,mag);%画频谱图axis([-10,50,0,80]);五、思考题1.如何产生方波信号序列和锯齿波信号序列?方波源程序:function[y,t]=squ(T)%方波T=0:0.001:2*pi;%方波的时间向量y=square(6*T);%方波w=6,周期为T=2*pi/6plot(T,y);%画方波;axis([T(1)-1,T(end)+1,-2,2]);%坐标轴区域锯齿波源程序:function[y,t]=saw(t)t=0:0.001:10;y=t-fix(t);%取t的小数部分plot(t,y)2.总结matlab编程和C编程的相同点和不同点?(1)相同点:都是可编程软件;很多编程语句和规则都是相同的(如赋值、变量命名、循环语句、条件语句、函数嵌套调用等);都是实现结构化程序块编程。(2)不同点:MATLAB是一种数值计算环境和编程语言,它可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。Matlab中很多函数可以直接使用而非定义声明之后调用。C语言,是一种通用的、程序式的编程语言,广泛用于系统与应用软件的开发。具有高效、灵活、功能丰富、表达力强和较高的移植性等特点,也就是说,C语言的目的是用与软件开发,它有着丰富的应用支持。C语言中调用函数必须事先自定义和声明。3.总结叙述matlab编程的一个新应用领域,工具箱或功能目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、线性矩阵不等式控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等领域。模型预测控制工具箱提供了一系列用于模型预测控制的分析、设计和仿真的函数。这些函数的类型主要有:①系统模型辨识函数:主要功能包括通过多变量线性回归方法计算MISO脉冲响应模型和阶跃响应模型及测量数据的归一化等。②模型建立和转换函数:主要功能包括建立模型预测控制工具箱使用的MPC状态空间模型及状态空间模型与MPC状态空间模型、阶跃响应模型、脉冲响应模型之间的转换。③模型预测控制器设计和仿真工具主要功能包括面向阶跃响应模型的预测控制器设计与仿真函数和面向MPC状态空间模型的设计和仿真函数两类。④系统分析工具主要功能包括计算模型预测控制系统频率响应、极点和奇异值的有关函数。⑤其他功能函数主要功能包括绘图和矩阵计算函数等。