时域信号的MATLAB仿真系统Word下载.docx
《时域信号的MATLAB仿真系统Word下载.docx》由会员分享,可在线阅读,更多相关《时域信号的MATLAB仿真系统Word下载.docx(22页珍藏版)》请在冰豆网上搜索。
设计目的:
1.熟悉MATLAB软件平台
2.掌握MATLAB编程方法、常用语句和可视化绘图技术
3.熟悉和掌握常用的用于信号和系统时域仿真分析的MATLAB函数
具体任务及要求:
对MATLAB进行研究,了解MATLAB软件在信号处理中常用的几种功能。
对于连续系统,了解信号描述及运算,连续时域系统分析和连续时域系统的仿真。
对于离散系统,了解线性离散时间信号的基本运算,线性离散时域系统的响应,单位取样响应以及线性离散时间信号的卷积和运算。
课程设计进度安排:
序号
内容安排
时间
1
收集资料,确定课题的实施方案
2014.11.1之前
2
软件设计
2014.11.1-2014.12.1
3
整理资料,编写程序报告
2014.12,1-2014.12.20
4
完成定稿,打印报告
2014.12.15之前
课程设计参考文献:
[1]管致中、夏恭恪、孟桥:
信号与线性系统,高等教育出版社,2004.8,P63-P81
[2]郑君里、应启衍、杨为理:
信号与系统,高等教育出版社,2000.4,P93-P99
[3]丁玉美、高西全:
数字信号处理,西安电子科技大学出版社,2001.8,P45-P66
[4]程佩青:
数字信号处理教程,清华大学出版社,2007.6,P92-P113
[5]王沐然:
MATLAB与科学计算,电子工业出版社,2003.7,P281-P316
指导教
师签字
院长审核签字
内容摘要:
信号与系统是通信和电子信息类专业的核心基础课,其中的概念和分析方法广泛应用于通信、自动控制、信号与信息处理、电路域系统等领域。
MATLAB是MatrixLABoratoy的缩写,它是一种以矩阵运算为基础的交互式程序语言,专门针对科学、工程计算及绘图的需求。
MATLAB是美国MathWorks公司开发的大型工程计算软件,其顶尖的数值计算功能、强大的图像可视化功能、简洁易学的编程语言、可交互式的集成环境,深受工程技术人员欢迎。
由于其内部包含规模极大、覆盖面极广的工具箱,因此应用范围十分广泛。
利用其强大的信号处理工具箱可以生成信号,而且还可计算系统的响应,并可完成对连续时间系统的时域、频域及复频域的分析和仿真。
MATLAB可应用于连续系统中零输入状态响应的数值求解和符号求解,冲击响应和阶跃响应,以及卷积积分的求解和仿真。
可运用于离散系统的时域分析和响应、单位取样响应、卷积运算、信号抽样的运算和仿真。
关键词:
时域信号MATLAB仿真
ThetimedomainsignalofMATLABsimulationsystemdesign
Abstract:
Signalandsystemisthecoreofthebasiccourseofcommunicationandelectronicinformationspecialty,domainconceptandtheanalysismethodwidelyusedTongxin,automaticcontrol,signalandinformationprocessing,thecircuitdomainsystemetc..MATLABistheabbreviationofMatrixLABoratoy,whichisamatrixbasedinteractiveprogramminglanguage,specificallytotheneedsforscientificandengineeringcalculationanddrawing.MATLABisalargeprojectdevelopmentAmericancalculationsoftwareMathofWorkscompany,theleadingfunctionofnumericalcalculation,powerfulimagevisualizationfunction,simpleandeasytolearnprogramminglanguage,interactiveintegrationenvironment,bytheengineeringandtechnicalpersonnelwelcome.Duetoitsinternalcontainsscalegreat,widecoverageofthetoolbox,thereforetheapplicationrangeisveryextensive.Cangenerateasignalusingitspowerfulsignalprocessingtoolbox,butalsocanresponsecalculationsystem,andcancompletetheanalysisandSimulationoftimedomain,frequencydomainandcomplexfrequencydomainforcontinuoustimesystems.NumericalandsymbolicsolutionofMATLABcanbeappliedtocontinuoussystemzeroinputresponse,impulseresponseandstepresponse,andtheconvolutionintegralsolutionandsimulation.Canbeusedinthetimedomainanalysisofdiscretesystemsandresponse,unitsamplingresponse,convolutioncomputationandSimulationofsignalsampling.
Keywords:
ThetimedomainsignalMATLABSimulation
前言
信号与系统课程是一门实用性较强、涉及面较广的专业基础课,是通信、电子信息类专业本科生的必修课程。
也是许多通信、电子信息类专业硕士研究生入学必考课程,其中的概念和分析方法广泛应用于通信、自动控制、信号与信息处理、电路域系统等领域。
该课程是将学生从电路分析的知识领域引入信号处理与传输领域的关键性课程。
对后续专业课起着承上启下的作用。
在信号与系统中,时域分析法是系统三大分析法之一,在系统分析中具有重要意义。
这不仅是因为时域分析简单直观,概念容易理解,而且,还有一些非线性系统在限定范围与指定条件下,遵从线性特性的规律,另一方面,线性系统时域分析方法已经形成了完整的严密的体系,日趋完善和成熟。
时域分析法直接分析时间变量的函数,研究系统的时间响应特性。
这种方法的优点是概念清楚。
对于输入、输出描述的数学模型,可以利用经典法解常系数线性方程或差分方程;
对于状态变量描述的数学模型,则需解矩形方程,在线性系统时域分析方法中,卷积方法最受重视,它的优点表现在许多方面。
课题主要应用MATLAB的数值运算和图形功能对线性时域系统进行分析,并利用其仿真功能对线性时域系统进行分析。
MATLAB前身为美国NewMexico大学计算机主任CleveMoler博士利用业余时间为方便同学使用EISPACK和LINPACK库程序编写得FORTRAN接口程序,并且使用MATrix和LABoratory两个单词的前三个字母组成的名字MATLAB。
初期的MATLAB商业版本由SteveBangert主持开发编译解释程序,SteveKleiman完成图形功能的设计,JohnLittle和CleveMoler主持开发了各类数学分析的子模块;
随后经过几年的快速发展,MATLAB由mathworks公司在1993年突出了MATLAB的4.0版本;
1995年推出了MATLAB4.2c(forWin3.x)版本;
1995年推出了MATLAB5.0版本;
2000年10月推出了MATLAB6.0版本;
随后推出了MATLAB6.1、MATLAB6.5、MATLAB7.0、matlab7.1和MATLABR2006a版本。
其功能越来越强大,应用领域也越来越广,成为当今应用比较广泛的工具软件之一。
MATLAB自产生之日起就具有方便的数据可视化功能以将向量和矩阵用图形表现出来并且可以对图形进行标注和打印。
高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。
可用于科学计算和工程绘图。
MATLAB同样表现了出色的处理能力。
同时对一些特殊的可视化要求应用广泛的模块集合工具箱。
MATLAB把工具箱延伸到了科学研究和工程应用的诸多领域诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等都在工具箱Toolbox家族中有了自己的一席之地。
MATLAB是一个高级的矩阵阵列语言。
它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序M文件后再一起运行语法特征。
其与C++语言极为相似而且更加简单更加符合科技人员对数学表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。
当前,科技飞速发展,新技术不断涌现,例如超宽带通信、人工神经网络信号处理、盲信号处理以及量子计算机与量子通信等,都可能成为今后实用的技术,相关的知识将成为“信号与系统”课程中新的知识点,并可能对整个课程体系产生重大的影响。
在今后必须重视跟踪新技术发展趋势。
1MATLAB简介
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是矩阵实验室MatrixLaboratory的简称,和Mathematica、Maple并称为三大数学软件。
它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完相同的事情简捷得多。
并且mathwork也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。
在新的版本中也加入了对C、FORTRAN、C++、JAVA的支持。
可以直接调用,用户也可以将自己编写的实用程序导入到MATLAB函数库中方便自己以后调用。
此外许多的MATLAB爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。
20世纪70年代,美国新墨西哥大学计算机科学系主任CleveMoler为了减轻学生编程的负担,用FORTRAN编写了最早的MATLAB。
1984年由Little、Moler、SteveBangert合作成立了的MathWorks公司正式把MATLAB推向市场。
到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。
历经升级,到2001年已经有了6.0版。
现在MATLAB6.1、6.5、7.0、7.X都已相继面世。
早期的MATLAB在DOS环境下运行,1990年推出了Windows版本。
1993年Mathworks公司又推出了MATLAB的微机版本,充分支持在MicrosoftWindows界面下的编程。
随着版本的升级,内容不断扩充,它的功能越来越强大。
特别是在系统仿真和实时运行等方面有很多新进展,更扩大了它的应用前景,是各种科学计算软件中使用频率最高的软件。
MATLAB包括拥有数百个内部函数的主包和三十几种工具包。
工具包又可以分为功能性工具包和学科工具包。
功能工具包用来扩充MATLAB的符号计算、可视化建模仿真、文字处理及实时控制等功能。
学科工具包是专业性比较强的工具包,控制工具包、信号处理工具包、通信工具包等都属于此类。
1993年出现SIMULINK,这是基于框图的仿真平台。
SIMULINK挂接在MATLAB环境上,以MATLAB的强大计算功能为基础,以直观的模块框图进行仿真和计算。
SIMULINK提供了各种仿真工具,尤其是它不断扩展的、内容丰富的模块库,为系统的仿真提供了极大便利。
在SIMULINK平台上,拖拉和连接典型模块就可以绘制仿真对象的模型框图,并对模型进行仿真。
在SIMULINK平台上,仿真模型的可读性很强,这就避免了在MATLAB窗口使用MATLAB命令和函数仿真时需要熟悉记忆大量M函数的麻烦。
对广大工程技术人员来说,这无疑是最好的福音。
现在的MATLAB都同时捆绑了SIMULINK的版本也在不断升级。
从1993年的MATLAB4.0/SIMULINK1.0版到2001年的MATLAB6.1/SIMULINK4.1版,2002年即推出了MATLAB6.5/SIMULINK5.0版。
MATLAB已经不再是单纯的“矩阵实验室”了,它已经成为一个高级计算和仿真平台。
1.1MATLAB的特点和优势
特点:
▲此高级语言可用于技术计算
▲此开发环境可对代码、文件和数据进行管理
▲交互式工具可以按迭代的方式探查、设计及求解问题
▲数学函数可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分
▲二维和三维图形函数可用于可视化数据
▲各种工具可用于构建自定义的图形用户界面
▲各种函数可将基于MATLAB的算法与外部应用程序和语言(如C、C++、Fortran、Java、COM以及MicrosoftExcel)集成
优势:
●友好的工作平台和编程环境
●简单易用的程序语言
●强大的科学计算机数据处理能力
●出色的图形处理功能
●应用广泛的模块集合工具箱
●实用的程序接口和发布平台
●应用软件开发(包括用户界面)
1.2MATLAB在信号处理上的应用
MATLAB是一个包含大量计算算法的集合。
拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。
函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。
在通常情况下,可以用它来代替底层编程语言,如C和C++。
在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。
MATLAB的这些函数集包括从最简单最基本的函数到诸如矩、特征向量、快速傅里叶变换的复杂函数。
函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅里叶变换和数据的统计分析、工程中的优化问题、复数的各种运算、三角函数和其他初等数学运算、多维数组操作及其建模动态仿真。
正是因为MATLAB拥有如此强大的科学计算机数据处理的功能,其在信号处理上就更能体现优势。
2信号分析
2.1信号的描述及运算
2.1.1信号的时移、反褶和尺度变换
信号的时移、反褶和尺度变换是针对自变量而言的,其数学表达式与波形变化之间存在一定的变化规律。
信号
的时移就是将信号数学表达式中的自变量
用
替换,其中
为正实数。
因此,波形的时移变换是将原来的
波形在时间轴上向左或向右移动。
已知信号
的波形如下图所示,试用MATLAB命令画出
、
的波形图。
2-1
波形图
其实现的MATLAB源代码如下:
clearall;
t=2:
0.01:
4;
ftl=functl(t-2);
subplot(2,2,1);
piot(t,ftl);
xlabel(’(a)f(t-2)’);
gridon;
axis([-24-0.52]);
ft2=functl(3*t);
subplot(2,2,2);
plot(t,ft2);
xlabel(’(b)f(3t)’);
ft3=functl(-t);
subplot(2,2,3);
plot(t,ft3);
xlabel(’(c)f(-t)’);
ft4=functl(-3*(t+2/3));
subplot(2,2,4);
plot(t,ft4);
xlabel(’(d)f(-3t-2)’);
图2-2f(t-2)、f(3t)、f(-t)、f(-3t-2)的波形图
2.1.2积分运算
用MATLAB命令求函数:
,
关于x的一阶导数。
symsaxy1y2
y1=sin(a*x^2);
y2=x*sin*log(x);
dy1=2*a*x*cos(a*x^2)
dy2=sin(x)+log(x)*sin(x)+x*cos(x)log(x)_
2.1.3信号的相加与相乘运算
信号的相加与相乘是指在同一时刻信号取值的相加与相乘。
因此,MATLAB对于时间信号的相加与相乘都是是基于向量的点运算。
已知
,试用MATLAB命令绘出
和
的波形图,其中
。
其实现的MAYLAB程序代码如下:
f=1;
t=0:
3/f;
f1=sin(2*pi*f*t);
f2=sin(2*pi*8*f*t);
subplot(2,1,1);
plot(t,f1+1,’:
’,t,f1-1,’:
’,t,f1+f2);
xlabel(’(a)f1(t)+f2(t)’);
subplot(2,1,2);
plot(t,f1,’:
’,t,-f1,’:
’,t,f1.*f2);
xlabel(’(b)f1(t)+f2(t)’);
图2-3
的波形图
2.2信号时域分析
2.2.1冲激响应和阶跃响应
在连续线性时域系统中,冲激响应和阶跃响应是系统特性的描述,对它们的分析是线性系统中极为重要的问题。
输入为单位冲激响应函数
所引起的零状态响应称为单位冲激响应,简称为冲激响应,用h(t)表示;
输入为单位阶跃函数u(t)所引起的零状态响应称为单位阶跃响应,简称为阶跃响应,用g(t)表示。
在MATLAB中,对于连续时域系统的冲激响应和阶跃响应的数值解,可分别利用控制系统工具提供的函数impulse和step来求解。
其调用格式如下:
y=impulse(sys,t)
y=step(sys,t)
其中,t表示计算系统响应的时间抽样点向量,sys表示线性时域系统模型。
已知一连续时域系统的微分方程如下:
(2-1)
下面用MATLAB命令绘出
范围内系统的冲激响应h(t)和阶跃响应g(t)。
其实现的MATLAB代码如下:
0.001:
sys=tf([1,16],[1,2,32]);
h=impulse(sys,t);
g=step(sys,t);
plot(t,h);
xlabel(’时间/s’);
ylabel(’h(t)’);
title(’冲激响应’);
plot(t,g);
title(’阶跃响应’);
其仿真波形如图:
图2-4冲激响应h(t)和阶跃响应g(t)
2.2.2零状态响应、零输入响应和完全响应
前面已述及线性连续系统可用常系数微分方程来描述。
该系统的完全响应由零输入响应和零状态响应两部分组成。
MATLAB符号工具箱提供了dsolve函数,可实现常系数微分方程的符号求解,其调用格式如下:
Dsolve(‘eq1’,‘eq2’,……,‘cond1’,‘cond2’,……,‘v’)
其中,参数eq1、eq2、……表示各微分方程,它与MATLAB符号表达式的输入基本相同,微分或导数的输入是用D1y、D2y、D3y、……表示y的一阶导数
、二阶导数
、三阶导数
、……;
参数cond1、cond2、……表示各初始条件或起始条件;
参数v表示自变量,默认为变量t。
可利用dsole函数来求解系统微分方程的零输入响应和零状态响应,进而求解完全响应。
下面用MATLAB命令求解微分方程
,当输入
,起始条件为y(0_)=1、
时,系统的零输入响应,零状态响应及完全响应。
求得零输入响应和零状态响应后,完全响应则为两者之和。
其实现的MATLAB程序代码如下:
eq=’D2y+3*Dy+2*y=0’;
cond=’y(0)=1,Dy(0)=2’;
yzi=dsolve(eq,cond);
yzi=simplify(yzi)
yzi=-3*exp(-2*t)+4*exp(-t)
eq1=’Dy+3*Dy+2*y=Dx+3*x’;
eq2=’x=exp(-3*t)*Heaviside(t)’;
cond=’y(-0.001)=0,Dy(-0.001)=0’;
yzs=dsolve(eq1,eq2,cond);
yzs=simplify(yzs.y)
yzs=1/4*exp(-1/2*t)*Heaviside(t)
yt=simplify(yzi+yzs)
yt=-3*exp(-2*t)+4*exp(-t)+1/4*exp(-1/2*t)*Heaviside(t)
subplot(3,1,1);
ezplot(yzi,[0,8]);
title(‘零输入响应’);
subplot(3,1,2);
ezplot(yzs,[0,8]);
title(‘零状态响应’);
subplot(3,1,3);
ezplot(yt,[0,8