青岛滨海学院毕业设计1引言MATLAB是“矩阵实验室”(MatrixLaboratory)的缩写,它是一种以矩阵运算为基础的交互式程序语言,着重针对科学计算、工程计算和绘图的需要。与其他计算机语言相比,其特点是简洁和智能化,适应科技专业人员的思维方式和书写习惯,是的编程和调试效率大大提高。MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。基于MATLAB的时域响应分析2正文一、MATLAB语言的简介1.1MATLAB的发展历程MATLAB是美国MathWorks公司的产品,MATLAB的名字由Matrix(矩阵)和Laboratory(实验室)两个单词的3个字母组成,这也反映了MATLAB的基本功能。1980年前后,时任美国NewMexico大学计算机科学系主任的CleveMoler教授为了减轻学生的编程负担,为学生设计了一组调用LINPACK(基于特征值计算的软件包)和EISPACK(线性代数软件包)库程序的“通俗易用”的接口,这就是用Fortran语言编写的萌芽状态的MATLAB。早期的MATLAB只能进行谈判矩阵运算,功能简单,作为免费软件在大学里使用,深受大学生喜爱。1983春天,CleveMoler到Standford大学讲学,MATLAB深深的吸引了工程师JohnLittle。JohnLittle敏锐的察觉到MATLAB在工程领域的广泛前景。1984年,CleveMoler和JohnLittle成立了MathWorks公司,正式把MATLAB推向市场。MATLAB的第一个商业化的版本是同年推出的3.0DOS版本。之后,MathWorks公司继续进行MATLAB的研究和开发,逐步将其发展成为一个集数值处理、图形处理、图像处理、符号计算、文字处理、数学建模、实时控制、状态仿真和信号处理为一体的数学应用软件。1992年,MathWorks公司推出了4.0版本。1993年推出了MATLAB4.1版本。4.x版在继承和发展其原有的数值计算和图形可视能力的同时,出现了几个重要变化:推出了Simulink,一个交互式操作的动态系统建模、仿真、分析集成环境;推出了符号计算工具包,一个以Maple为“引擎”的SymbolicMathToolbox1.0,此举结束了国际上数值计算和符号计算孰优孰劣的长期争论,促成了两种计算的互补发展新时代;构成了Notebook。MathWorks公司瞄准应用范围最广的Word,运用DDE和OLE,实现了MATLAB和Word的无缝隙连接,从而为专业科技工作者创造了融科学计算、图形可视和文字处理于一体的高水准环境。1997年推出5.0版本,允许了更多的数据结构,如单元数据、多维矩阵、对象与类等,使其成为一种更方便编程的语言。2000年10月底推出了全新的MATLAB6.0正式版(Release12),在核心数值算法、界面设计、外部接口、应用桌面等诸多方面有了极大的改进。现在的MATLAB支持各种操作系统,它可以运行在十几个操作平台上,其中比较常见的有基于Window9x/NT、OS/2、Macintosh、Sun、UNIX、Linux等平台的系统。现在的MATLAB再也不是一个简单的矩阵实验室了,它已经演变成为一种具有广泛应用前景的全新的计算机高级编程语言了。其功能也越来越强大,青岛滨海学院毕业设计3会不断根据科研需求提出新的解决方法。2004年6月,推出MATLAB7.0版本,同时更新了电力系统仿真工具箱(Simpowersystem),与以前的版本有较大区别。2006年9月正式推出MATLABR2006b。从这以后,MathWorks公司每年进行两次产品发布,时间分别在每年的3月和9月,而且,每一次发布都会包含产品模块,如产品的newfeature、bugfixex和新产品模块的推出。在R2006a中(MATLAB7.2,Simulink6.4),主要更新了10个产品模块,增加了多达350个新特性,增加了对64位Window的支持,并且新推出了.net工具箱。对于新产品及新特性,可以在MATLAB命令窗口使用“whatsnew”命令查看。2007年3月1日推出MATLABR2007a版本,主要更新了多个产品模块,增加了多达350个新特性,增加了对64位Windows的支持,并推出了.net工具箱。MATLABR2007版本中,产品模块进行了一些调整,将MATLABBuilderforCOM的功能集成到MATLABBuilderfor.net中,将FinacialTimeSeriesToolbox的功能集成到FinacialToolbox中了。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛的应用于科学计算、控制系统及信息处理等领域的分析、仿真和设计工作,而且利用MATLAB产品的开放式结构,可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB产品以提高产品自身的竞争能力。2008年3月1日推出MATLABR2008a版本。R2008a版本对MATLAB和Simulink这两个产品大类增加了一些新特性,另外增加两个新的产品(CDASimulatorLinkDS和EmbeddedIDELinkMU),还对其他82个产品进行了更新和故障修正。从R2008a版本开始,MATLAB和Simulink产品家族将需要激活,订阅MathWorks软件维护服务的客户可以下载产品更新。R2008a版本也增加了“许可证中心”,这是一个为了满足普通的许可证管理所需的在线工具。在新版本的MATLAB中增加了优异的面相对象编程支持,这包括对类、对象、继承、方法、属性、事件和封装的完全支持。在优化工具箱中,增加了针对大规模优化问题的内点算法求解器和并计算支持。在金融工具箱中,增加了针对均值——方差模型下的投资组合优化问题求解的线性互补程序(LCP)。并行计算工具箱增加了对PBS和ProTORQUE调度程序的完全支持。在统计工具箱,增加了交叉验证、特征选择、拟随机数和偏最小乘法。1.2MATLAB的主要功能及其应用MATLAB发展至今,已经不仅仅是单纯矩阵运算的数学处理软件,其开放式的结构吸引了许多优秀的人才编写M函数和工具箱,目前已经渗透到了工程计算和设计的各个领域。其中与控制系统设计与仿真相关的功能及应用大致以下各项:基于MATLAB的时域响应分析4(1)数值计算及分析●向量、矩阵的运算分析●复数运算及分析●微分方程的求解●稀疏矩阵的运算●特殊函数的计算机分析●快速傅立叶变换及信号处理矩阵计算●数据分析及系统计算(2)程序语言及算法实现●程序流程控制语句●C语言产生器●文件管理及二进制输入输出(3)MATLAB绘图功能●二维图形绘制●特殊坐标图形绘制及修改●三维坐标图形绘制(4)MATLAB与高级语言接口●MATLAB与C语言接口及库函数●MATLAB与C++语言接口及库函数●MATLAB编译器(5)Simulink建模与仿真●Simulink加速器●实时工作空间(Real-TimeWork)●非线性控制系统设计1.3SIMULINK与控制系统SIMULINK自1992年问世以来,就很快在控制界有了广泛的应用。它的前身是1990年MathWorks公司为MATLAB提供的控制系统模型图形输入和仿真工具SIMUAB。概括的说,SIMULINK是一个可视化动态系统仿真环境。一方面,它是MATLAB的扩展,保留了所有MATLAB的函数和特性:另一方面,它又有可视化仿真和编程的特点。自从SIMULINK问世以来,很大一部分控制系统的设计和仿真问题都是在SIMULINK环境下完成的。在SIMULINK环境下分析和设计控制器,甚至不需要编制任何程序就可以得青岛滨海学院毕业设计5到希望的参数。并且,SIMULINK秉承了MATLAB的优点,所有仿真结果都可以通过图形来显示。二、控制系统的时域分析时域分析是指控制系统在一定的条件下,根据输出量的时域表达式,分析系统的稳定性、瞬态和稳态性能。在时域内对控制系统进行分析,应该首先求取系统在典型输入信号下的时间响应,然后直接从系统的时间响应分析其稳态性能及动态性能。由于时域分析是直接在时间域中对系统进行分析的方法,所以时域分析具有直观和准确的优点。系统输出量的时域表达式可由微分方程得到,也可由传递函数得到。在初值为零时,一般都利用传递函数进行研究,用传递函数间接的评价系统的性能指标。具体是根据闭环系统传递函数的极点和零点来分析系统的性能,此时也称为复频域分析。三、仿真实例及结果分析某系统的开环传递函数为:38440014020200)(234sssssGk试求其闭环传递函数,并绘制输出量阶跃响应曲线和脉冲响应曲线。选择函数的状态变量将其转化为状态方程模型,并绘制状态变量的阶跃响应曲线和脉冲曲线。程序如下:clccloseall;clear;%系统开环传递函数初始化numo=[0000200];deno=[120140400384];%求解系统的闭环传递函数numc=numo;n=length(deno);denc=zeros(1,n);denc=numo+deno;%结果显示基于MATLAB的时域响应分析6disp('SystemClosedLoopTransferFunctionis:')numcdenc%系统仿真数据初始化t=0:0.05:3;%系统输出量的阶跃响应y=step(numc,denc,t);%系统输出量的脉冲响应yy=impulse(numc,denc,t);%输出量阶跃响应曲线绘制figureplot(t,y);title('SystemStepResponse');xlabel('Time-sec');ylabel('Response-value');grid;%输出量脉冲响应曲线绘制figureplot(t,yy);title('SystemImpulseResponse');xlabel('Time-sec');ylabel('Response-value');grid;%求解系统的状态方程模型[A,B,C,D]=tf2ss(numc,denc);%状态方程模型结果显示disp('SystemState-SpaceModelis:');A青岛滨海学院毕业设计7BCD%系统状态变量的阶跃响应[ys,x]=step(A,B,C,D,1,t);%系统状态变量的脉冲响应[yys,xx]=impulse(A,B,C,D,1,t);%状态变量阶跃响应曲线绘制figureplot(t,x(:,1),t,x(:,2),'+',t,x(:,3),'.-',t,x(:,4),'.')title('SystemState-VariablesStepResponse');xlabel('Time-sec');ylabel('Response-value');grid;figure%状态变量脉冲响应曲线绘制plot(t,xx(:,1),t,xx(:,2),'+',t,xx(:,3),'.-',t,xx(:,4),'.')title('SystemState-VariablesImpulseResponse');xlabel('Time-sec');ylabel('Response-value');grid;程序运行结果如下:SystemClosedLoopTr