收藏 分销(赏)

MATLAB毕业论文.doc

上传人:Fis****915 文档编号:552281 上传时间:2023-12-06 格式:DOC 页数:13 大小:324KB 下载积分:6 金币
下载 相关 举报
MATLAB毕业论文.doc_第1页
第1页 / 共13页
MATLAB毕业论文.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
基于MATLAB的信号与系统分析实例 摘要 随着信息技术的飞速发展,在人们的日常生产实践中,对信号的检测分析处理就显得犹为重要,而在对信号的分析工程当中,复杂的数学运算给人们分析处理信号带来了一定的困难,MATLAB的诞生,为信号与系统的分析带来了极大的方便,利用MATLAB软件,人们可以对检测到的信号做出实时准确的分析,极大的提高了工作效率。MATLAB 的名称源自 Matrix Laboratory ,它是一种科学计算软件,专门以矩阵的形式处理数据。 MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。目前 MATLAB 产品族可以用来进行:数值分析 数值和符号计算 工程与科学绘图 数字图像处理 数字信号处理 通讯系统设计与仿真 财务与金融工程。本文是基于MATLAB的对信号与系统的分析,主要介绍了用MATLAB对信号进行表达,对信号进行卷积运算,对信号的频谱进行分析,对系统函数与系统性质分析。 关键词:MATLAB 频谱 卷积 1 信号的表达 信号可以表达为时间的函数,根据定义的不同,信号可以分为连续时间信号和离散时间信号,分别表示为x(t)和x[n];对于确定信号,时间变量值与对应的函数值形成一一对应关系。要将信号保存到计算机系统中,信号必须表现为有限长度的离散数字序列;在MATLAB中,信号与对应的时间变量采用两个一维向量(序列)表示,两序列长度必须相等。 1.1 离散时间信号x(n)的表达:离散时间变量n只能取整数值,与其对应的函数值形成离散时间信号;x和n为长度相同的序列,序列元素的编号从1开始;坐标序列n值的设置: n=[-3:3] 设定起点和终点;x的值可以直接设置,也可以根据与n有关的运算得到(必须先定义n):x=[1 2 3 4 3 2 1] x=3*n x=exp(j*(pi/8)*n),采用函数stem(n,x)可以作出离散信号的图形。 例1.1 离散时间信号的表达:画出下列离散信号 x1={1,2,3,4,3,2,1}0 x2=3n x4=(0.8)n 解:MATLAB程序为: n=[0:6];n1=[0:30]; x1=[1 2 3 4 3 2 1]; x2= 3*n; x3=exp(j*(pi/8).*n1); x4=0.8.^n1; subplot(2,2,1),stem(n,x1);ylabel('x1'); subplot(2,2,2),stem(n,x2);ylabel('x2'); subplot(2,2,3),stem(n1,x3);ylabel('x3'); subplot(2,2,4),stem(n1,x4);ylabel('x4'); 执行结果为 1.2 连续时间信号x(t) 的表达与画图:当时间变量取值间隔足够小时,可以看作是连续变化,与其对应的函数值成为连续时间函数;坐标变量t值的设置: t=[0:0.1:10],设定起点、变化步长和终点;x的值必须根据与t有关的运算得到(必须先定义t),t和x必须为长度相同的序列; x1=[zeros(1,30) ones(1,40) zeros(1,31)], x2=2-0.3*t x3=exp(j*(pi/8)*t) 采用函数plot(t,x)可以作出连续时间信号的图形(离散点之间采用直线连接构成连续图形); 例1.2 连续时间信号的表达:画出下列连续信号 解:MATLAB程序为: t=[0:0.1:10]; x1=[zeros(1,30) ones(1,40) zeros(1,31)];x2=2-0.3*t; x3=exp(j*(pi/8)*t);x4=exp(-0.2*t).*cos(2*pi*t); subplot(2,2,1),plot(t,x1);ylabel('x1');axis([0,10,-0.2,1.2]); subplot(2,2,2),plot(t,x2);ylabel('x2'); subplot(2,2,3),plot(t,x3);ylabel('x3'); subplot(2,2,4),plot(t,x4);ylabel('x4'); 执行结果为: 2 LTI系统的卷积运算 LTI系统可以采用系统冲激响应h表达;对于已知系统(已知系统冲激响应h),当系统输入信号为x时,系统输出信号表现为h与x的卷积 ;当h端点为(h1,h2),x端点为(x1,x2)时,y的端点为(h1+x1,h2+x2);在MATLAB中,三者均由有限数字序列表示;在MATLAB中,可以利用函数y=conv(h,x)求卷积,由已知系统h、输入x,求系统输出y。 2.1 离散信号的卷积 已知系统冲激响应h,直接通过卷积求解: y=conv(h,x) ;要点:h和x均应为有限长度;y的长度为(h+x-1);对y画图时,时间变量的长度和端点应正确设定。 例2.1 利用下列程序,通过改变信号,演示卷积的重要性质; 解:MATLAB程序为: n=[-10:10]; h=[zeros(1,10) 1 1 1 1 1 zeros(1,6)]; x=[zeros(1,6) 1 0 0 0 0 0 0 0 0 zeros(1,6)]; n1=[-20:20];y=conv(h,x); subplot(2,2,1),stem(n,x); ylabel('x'); subplot(2,2,2),stem(n,h);ylabel('h'); subplot(2,1,2),stem(n1,y);ylabel('y'); 执行结果为 2.2 连续时间卷积的数值近似 对于有限区间内的连续信号,应先通过离散化成为有限数字序列,再进行卷积,最后用plot画出输出波形。要点:h和x均应为有限长度;y的长度为(h+x-1),对y画图时,时间变量的长度和端点应正确设定;连续信号的卷积本来是由积分定义的,改为离散序列进行卷积,应该将结果乘以采样周期T,即: y=conv(h,x)*T。 例2.2 利用下列程序,通过改变信号,演示卷积的重要性质; 解:MATLAB程序为: T=0.01;t=[-2:T:10]; u=(t>=0);u2=(t>=2);u5=(t>=5) h=u-u2;x=u-u5; %x=exp(-0.5*t).*u; t1=[-4:T:20];y=conv(h,x)*T; subplot(2,2,1),plot(t,x);axis([-2,10,-0.2,1.2]);ylabel('x'); subplot(2,2,2),plot(t,h);axis([-2,10,-0.2,1.2]);ylabel('h'); subplot(2,1,2),plot(t1,y);axis([-2,20,-2,3]);ylabel('y'); 执行结果为 3 信号的频谱分析 3.1离散时间付氏级数(DTFS) 定义 性质:时间信号x和频谱信号a均为周期信号,周期均为N。 变换方法:正变换函数 a=(1/N)*fft(x) 反变换函数 x=N*ifft(a)。 要点:x和a的周期都必须从相应0点开始选取一个周期;利用同样的坐标向量,采用stem函数对x和a作图,可以画出一个周期内的时间信号和频谱信号。 例3.1 已知和都是周期为8的周期信号,在从0开始的一个周期内, ,,求与这些信号对应的频谱,并作出对应的图形。 解:MATLAB程序为: N=8;n=[0:7]; x1=[0 0 1 1 1 1 0 0];x2=[0 1 2 3 4 3 2 1]; a1=(1/N)*fft(x1);a2=(1/N)*fft(x2); subplot(3,2,1),stem(n,x1);ylabel('x1'); subplot(3,2,2),stem(n,x2);ylabel('x2'); subplot(3,2,3),stem(n,abs(a1));ylabel('a1模'); subplot(3,2,5),stem(n,angle(a1));ylabel('a1相位'); subplot(3,2,4),stem(n,abs(a2));ylabel('a2模'); subplot(3,2,6),stem(n,angle(a2));ylabel('a2相位'); 执行结果为 a1 =[0.5000 -0.3018 - 0.1250i 0 0.0518 + 0.1250i 0 0.0518 - 0.1250i 0 -0.3018 + 0.1250i ] a2 =[2.0000 -0.8536 0 -0.1464 0 -0.1464 0 -0.8536 ] 3.2 连续时间信号的付氏级数 定义 性质:时间信号x为连续周期信号,频谱信号a为离散非周期信号。 变换方法:将从0开始的一个周期内的连续时间信号离散化为N项序列,再采用函数 a=(1/N)*fft(x)计算频谱的前N项。 要点:x应从相应0点开始选取一个周期,离散步长选取足够小时,可以采用plot函数画出该周期内的连续函数波形图。对于频谱信号a,应注意其坐标点数与x相同,但坐标值均应取整数(或的整数倍),可以利用axis函数从该序列中选取前若干项作图观察。 例3.2 已知x1和x2分别为在[-1,1]区间内的矩形脉冲和三角脉冲,若将其扩展为周期信号,周期为4,求与这些信号对应的频谱,作出对应的图形。 解:MATLAB程序为 t=[0:0.01:3.99]; N=400; u0=(t>=0);u1=(t>=1);u3=(t>=3); x1=u0-u1+u3;x2=(1-t).*(u0-u1)+(t-3).*u3; a1=fft(x1/N);a2=fft(x2/N); subplot(2,2,1),plot(t,x1);axis([0,4,-0.2,1.2]);ylabel('x1'); subplot(2,2,2),plot(t,x2);axis([0,4,-0.2,1.2]);ylabel('x2'); n=[0:399]; subplot(2,2,3),stem(n,a1); axis([0,10,-0.5,0.5]);ylabel('a1'); subplot(2,2,4),stem(n,a2);axis([0,10,-0.3,0.3]);ylabel('a2'); 执行结果为 3.3. 连续时间信号的付氏变换 定义 性质:时间信号x和频谱信号a均为无限长连续信号 变换方法:先将非周期连续时间信号的明显不为零区域截断为有限长度;将此区域内的信号看作是一个周期,将x推广为周期信号;选取从0开始的一个周期,利用步长d进行采样成为离散向量x;再用d*fft(x)得出与连续频谱采样对应的离散频谱;用plot函数和axis函数分别对有限时间范围内的连续信号和有限频率范围内的频谱信号作图; 要点:注意频谱坐标与周期的关系;作图时采用各自的坐标;有效频谱范围与采样频率有关;步长越小,采样点越多,则结果越准确; 例3.3 已知,,求与这些连续时间信号对应的连续频谱,作出对应的图形。 解:MATLAB程序为 t=[0:0.01:9.99];N=1000;w=pi/5; u0=(t>=0);u1=(t>=1);u3=(t>=9); x1=u0-u1+u3;x2=exp(-1.*t); X1=0.01.*fft(x1);X2=0.01.*fft(x2); subplot(2,2,1),plot(t,x1); axis([0,10,-0.2,1.2]);ylabel('x1'); subplot(2,2,2),plot(t,x2);ylabel('x2'); n=[0:999]; subplot(2,2,3),plot(n*w,X1); axis([0,20,-1,2.5]);ylabel('X1'); subplot(2,2,4),plot(n*w,X2);axis([0,10,-0.5,1]);ylabel('X2'); 执行结果为 4 系统函数与系统性质分析 4.1系统零点,极点和零极图 系统函数是复变量s或z的有理分式,当某变量值使系统函数为零时,该变量值称为系统零点;当某变量值使系统函数为无限大时,该变量值称为系统极点;当系统序列a和b为有限长度时,系统零点数量和极点数量有限,可以分别用零点序列和极点序列 表达,此时系统函数可以表达为因子形式 上式中k值称为系统增益。在复平面上,将零点和极点分别以和的形式标出,称为系统零极图。利用MATLAB函数zplane(b,a)可以画出给定系统的零极图;利用MATLAB函数[z,p,k]=tf2zp(b,a)可以以数值形式得到系统的零点序列,极点序列和增益。 例4.1 对于系统函数,求系统的零点序列,极点序列和增益,并画出系统的零极图。 解:MATLAB程序为: b=[0 0 5 0];a=[1 -1 2 3]; zplane(b,a); [z,p,k]=tf2zp(b,a) 执行结果为 z = 0 ,p = [ 0.9219 + 1.6449i 0.9219 - 1.6449i -0.8437 ] k = 5 4.2 部分分式分解与系统单位冲激响应 利用系统函数求系统单位冲激响应时经常采用部分分式分解方法,利用系统极点将系统函数分解为一阶分式的和,每个一阶分式与一个冲激响应模式对应: 对于连续系统 对于离散系统 利用MATLAB函数[r,p]=residuez (b,a)可以由已知系统得到分解系数序列r,极点序列p,由此可以方便地写出单位冲激响应的闭合表达形式; 采用MATLAB函数dimpulse (b,a,N)和dstep (b,a,N)可以直接得到以N点序列表达的离散系统单位冲激响应和单位阶跃响应;采用MATLAB函数impulse (b,a,t)和step (b,a,t)可以得到以给定序列t为变量表达的连续系统的单位冲激响应和单位阶跃响应; 例4.2 对于系统函数,求出系统单位冲激响应的系数序列r和极点序列p,并画出系统单位冲激响应和单位阶跃响应的40点序列。 解:MATLAB程序为 b=[0 0 3 6];a=[2 -0.8 -1.1 1.7]; N=40;n=[0:N-1]; subplot(2,1,1),stem(n,dimpulse(b,a,N)),title('impulse'); subplot(2,1,2),stem(n,dstep (b,a,N)),title('step'); [r,p]=residuez (b,a) 执行结果为: r = -0.4615 -1.5339 - 1.4050i -1.5339 + 1.4050i p = -1.0000 0.7000 + 0.6000i 0.7000 - 0.6000i 4.3 系统对输入信号的响应 利用MATLAB函数y=dlsim (b,a,x)和y=filter (b,a,x),可以对已知离散系统和输入序列x,给出输出序列y;输出序列的坐标和长度与x相同;利用MATLAB函数y=lsim (b,a,x,t),可以对已知连续系统和输入序列x,得到以给定序列t为变量表达的输出序列y;输出序列的坐标和长度与x相同。 例4.3对于系统,当输入信号为时,画出从0开始的40点的输入和输出序列。 解:MATLAB程序为: b=[0.3 0.3];a=[1 -0.9]; n0=0: 4; x0=[1 1 1 1 1]; x1=x0.*2.^n0; x2=[x1 zeros(1,35)]; y=dlsim(b,a,x2); n=0:39; subplot(2,1,1),stem(n,x2);title('x'); subplot(2,1,2),stem(n,y);title('y'); 执行结果为 5 结束语 基于MATLAB的信号与系统分析很好的利用计算机解决了大量计算的问题,利用MATLAB,我们只需要将所要分析的信号用MATLAB语言输入计算机,计算机就回自动生成我们需要的信号频谱图,我们就能很直观的看出信号的变化规律与变化趋势,为我们设计系统带来了极大的方便,同时也极大的提高了工作效率。 参考文献 [1] 苏金明.MATLAB程序设计[M].北京:电子工业出版社,2004. [2] 郑君里.信号与系统.北京:高等教育出版社,2005. [3] 张智星.MATLAB程序设计与应用.北京:清华大学出版社,2002. [4] 胡广书.数字信号处理.北京:清华大学出版社,1997.
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服