实验一 离散时间信号分析一、实验目的1. 初步掌握 Matlab 的使用,掌握编写M 文件和函数文件2. 掌握各种常用序列的表达,理解其数学表达式和波形表示之间的关系。
3. 掌握生成及绘制数字信号波形的方法。
4. 掌握序列的基本运算及实现方法。
5. 研究信号采样时采样定理的应用问题。
二、实验原理1.序列的基本概念离散时间信号在数学上可用时间序列{x (n )}来表示,其中x (n )代表序列的第n 个数字,n 代表时间的序列,n 的取值范围为-∞< n<+∞的整数,n 取其它值x (n )没有意义。
离散时间信号可以是由模拟信号通过采样得到,例如对模拟信号x a (t ) 进行等间隔采样,采样间隔为T ,得到{x (nT )} a 一个有序的数字序列就是离散时间信号,简称序列。
2.常用序列常用序列有:单位脉冲序列(单位抽样)δ (n )、单位阶跃序列u (n )、矩形序列R N (n ) 、实指数序列、复指数序列、正弦型序列等。
3.序列的基本运算序列的运算包括移位、反褶、和、积、标乘、累加、差分运算等。
4.序列的卷积运算 y(n)=∑x (m )h (n −m )+∞m=−∞=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−αt sin(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((n0<n1)|(n0>n2)|(n1>n2))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);n1<n0<n2if((n0<n1)|(n0>n2)|(n1>n2))error('参数不满足n1<n0<n2')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<=n<7]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;a<bif(a>=b)error('参数不满足a<b')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),t1<t2 if(t1>t2)error('参数不满足t1<t2')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),t1<t2if(t1>t2)error('参数不满足t1<t2')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/6 plot(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与通讯、电力系统仿真等领域。
模型预测控制工具箱提供了一系列用于模型预测控制的分析、设计和仿真的函数。