1.1 MATLAB相关简介
1.1.1 MATLAB发展历程和影响
MATLAB名字由Matrix(矩阵)和Laboratory(实验室)两词的前3个字母组合而成。20世纪70年代后期,时任美国新墨西哥大学计算机系主任的Cleve Moler博士讲授线性代数课程,发现应用其他高级编程语言极为不方便,于是Cleve Moler博士和他的同事构思并为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,这里就是用FORTRAN编写萌芽状态的MATLAB。以后几年,MATLAB作为免费软件在大学里被广泛使用,深受大学生的欢迎。
1984年,John Little、Cleve Moler和Steve Bangert合作成立了MathWorks公司,专门从事MATLAB软件的开发,并把MATLAB正式推向市场。从那时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。1993年,MathWorks公司推出MATLAB 4.0版本;1995年,MathWorks公司推出MATLAB 4.2C版(For Win3.X)。4.X版在继承和发展其原有的数值计算和图形可视能力的同时,增加了以下一些功能:
① 推出Simulink;
② 开发出基于Word处理平台的Notebook;
③ 推出符号计算工具包;
④ 开发了与外部进行直接数据交换的组件,打通了MATLAB进行实时数据分析、处理和硬件开发的通路。
1997年,MathWorks公司推出MATLAB 5.0;2000年10月推出了MATLAB 6.0;2002年8月,推出了MATLAB 6.5,从此MATLAB拥有了强大的、成系列的交互式界面。2004年7月,又进一步发展了MATLAB 7.0,在MATLAB 7.0中,仿真模块发展到了Simulink 6.0。
MATLAB R系列是从2006年开始发布的,MathWorks公司在技术层面上实现了一次飞跃。从此以后产品发布模式也将改变,将在每年的3月和9月进行两次产品发布,版本的命名方式为“R+年份+代码”,对应上下半年的代码分别是a和b。每一次发布都会包含所有的产品模块,如产品的new feature、bug fixes和新产品模块的推出。MATLAB R2008a是MathWorks公司2008年3月份推出的最新产品。
MATLAB 2008作为美国MathWorks公司开发的用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境,是目前最好的科学计算类软件,2008年11月MATLAB R2008b最新版正式发行,包含Win32和Win64位版。
目前,MATLAB已经成为国际最流行的科学与工程计算软件之一。它以模块化的计算方法、可视化与智能化的人机交互功能、丰富的矩阵运算、图形绘制和数据处理函数,以及模块化图形的动态系统仿真工具Simulink,成为控制系统设计和仿真领域最受欢迎的软件系统。
在欧美大学的应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析,以及动态系统仿真等课程的教科书,都把MATLAB作为其中的内容。在那里,MATLAB是攻读学位的大学生、硕士生和博士生必须掌握的基本工具。
在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件。在许多的国际学术刊物上(尤其是信息科学刊物),都可以看到MATLAB的应用。
在设计研究单位和工业部门,MATLAB被认为是进行高效研究、开发的首选软件工具,如美国National Instruments公司信号测量分析软件LabVIEW, Cadence公司信号和通信分析设计软件SPW等,都是以MATLAB为主要支撑的。
1.1.2 MATLAB语言特点
MATLAB语言除了具有的强大数值计算和图形功能以外,还有其他语言难以比拟的功能,如其提供的应用于许多领域的工具箱。此外,MATLAB与其他语言的接口能够保证它可以和各种强大的计算机软件相结合,发挥更大的作用。
MATLAB目前可以在各种类型的计算机上运行,如PC、Sun Space工作站、Silicon Graphics工作站、惠普工作站。如果单纯地使用MATLAB语言进行编程,则编写的程序可以直接移植到其他机型上使用。可以说,MATLAB是和机器类型及操作系统基本上无关的软件。
MATLAB语言具有较高的计算精度。一般情况下,矩阵类计算可以达到10-15数量级的精度,符合一般科学与工程计算的要求。
如果矩阵的条件数很大,则矩阵中一个参数的微小变化,就可能会使最终结果发生极大的变化,这种现象在数学上称为坏条件问题。对于这类问题,如果采用的算法不当,最后得出的结果可能不正确。使用MATLAB语言一般不会出现这类错误,即MATLAB是可靠的、数值稳定的。
1.1.3 MATLAB典型应用及组成部分
1.典型应用
MATLAB是一个高精度的科学计算语言,它将计算、可视化和编程结合在一个容易使用的环境中,在这个环境中,用户可以把提出的问题和解决问题的办法用熟悉的数学符号表示出来,它的典型应用包括以下方面。
● 数学和计算。
● 运算法则。
● 建模、仿真。
● 数据分析、研究和可视化。
● 科学的工程图形。
● 应用程序开发,包括创建图形用户接口。
MATLAB是一个交互式系统,它的基本数据单元是数组,这个数组不要求固定的大小,因此可以让用户解决许多技术上的计算问题,特别是那些包括矩阵和大量计算的问题。MATLAB的指令表达与数学、工程中常用的习惯形式十分相似,与C、Fortran等高级语言相比,MATLAB的语法规则更简单、表达更符合工程习惯,正因为如此,人们用MATLAB语言编写程序就有如在便笺上书写公式和求解,因而MATLAB被称为“便笺式”的科学与工程计算语言。
MATLAB的最重要的特征是:拥有解决特定应用问题的程序组,也就是Toolbox(工具箱),如信号处理工具箱、控制系统工具箱、神经网络工具箱、模糊逻辑工具箱、通信工具箱和数据采集工具箱等许多专用工具箱,对大多数用户来说,要想灵活、高效地运用这些工具箱,通常都需要学习相应的专业知识。
此外,开放性也是MATLAB最重要和最受欢迎的特点之一。除内部函数外,所有的MATLAB主要文件和各工具箱文件都是可读、可改的源文件,因为工具箱实际上是由一组复杂的MATLAB函数(M文件)组成,它扩展了MATLAB的功能,用以解决特定的问题,因此用户可以通过对源文件进行修改和加入自己编写的文件去构建新的专用工具箱。
2.组成部分
MATLAB系统由下面5个主要部分组成。
1)MATLAB开发环境
开发环境是一组实用工具,利用这些工具,用户可以使用MATLAB函数和文件,这其中的很多工具都是图形用户接口,它包括MATLAB桌面和命令窗口、命令的历史记录、工作空间、文件和搜索路径,以及用来帮助查看的浏览器。
2)MATLAB数学函数库
MATLAB数学函数库是一个庞大的计算算法库,包括从基本函数,如sum、sine、cosine和复杂算法,到更复杂的函数运算,如矩阵求逆、矩阵特征值、贝塞尔函数和快速傅里叶变换。
3)MATLAB语言
MATLAB语言是一个高级的矩阵/数组编程语言,该语言带有流程控制语句、函数、数据结构、输入/输出和面向对象编程的特点。它既可以编写快速执行的短小程序,也可以编写庞大的复杂应用程序。
4)MATLAB图形处理系统
这是MATLAB的图形系统,它既包括生成二维和三维数据可视化、图像处理、动画及演示图形的高级命令,也包括完全由用户自定制图形显示及在MATLAB应用程序中创建完整的图形用户接口的低级命令。
5)MATLAB应用程序接口(API)
这是一个用户编写与MATLAB接口的C和Fortran程序的函数库,它包括从MATLAB(动态链接)中调用指令和读/写MATLAB文件的程序。
1.1.4 MATLAB R2008a新特点
1.MATLAB产品家族新特性简要介绍
MATLAB中采用先进的面向对象编程,包括对类和对象、继承、方法、属性、事件和包的完全支持;
Optimization Toolbox中针对大量数据优化问题对内部点求解器和并行计算提供支持;
Financial Toolbox均方差投资优化的线性互补程序;
Parallel Computing Toolbox对PBS Pro和TORQUE规划的支持;
Statistics Toolbox中交叉确认、特性选择、半随机数和并行最小二乘特性;
2.Simulink产品家族新特性简要介绍
Simulink中重新设计的多平台库浏览器;
Real-Time Workshop Embedded Coder中生成对AUTOSAR兼容代码;
Embedded MATLAB中M-Lint代码分析仪和Simulink Design Verifier对Embedded;
MATLAB语言子集函数生成代码进行检查;
Simulink Verification and Validation提供对安全关键系统IEC 61508设计规则检查;
Simulink Fixed Point提供对浮点模型的自动定点转换的指导意见;
Communication Blockset针对调制、解调、编码和解码函数的定点支持;
Embedded IDE Link MU作为新产品将Simulink模型生成代码并应用到Green Hills MULTI开发环境中;
MATLAB R2008a将不再支持Power PC处理器上运行Macintosh OS X操作系统,也不支持Microsoft Windows 2000操作系统。此外,在MATLABR2008a中15个产品模块被重新命名。
1.1.5 MATLAB R2008a涵盖
Simulink 8、新产品Simulink Design Verifier、Link for Analog Devices VisualDSP以及82个产品模块的更新升级及Bug修订。
在MATLABR2008b中(MATLAB 7.4, Simulink 6.6),主要更新了多个产品模块、增加了多达350个新特性、增加了对64位Windows的支持,并新推出了.net工具箱。如R2007b、released on March 1、2007、includes updates to MATLAB and Simulink、two new products released since R2007b、and updates and bug fixes to 82 other products、R2007b adds support for the Intel®based Mac、Windows Vista™、and 64-bit Sun Solaris™SPARC platforms。
Simulink是基于MATLAB的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真,它的建模范围广泛,可以针对任何能够用数学来描述的系统进行建模,例如航空航天动力学系统、卫星控制系统、通信系统、船舶及汽车,等等,其中包括了连续、离散,条件执行,事件驱动,单速率、多速率和混杂系统,等等。Simulink提供了利用鼠标拖放的方法建立系统框图模型的图形界面,而且Simulink还提供了丰富的功能块以及不同的专业模块集合,利用Simulink几乎可以做到不书写一行代码完成整个动态系统的建模工作。
Stateflow是一个交互式的设计工具,它基于有限状态机的理论,可以用来对复杂的事件驱动系统进行建模和仿真。Stateflow与Simulink和MATLAB紧密集成,可以将Stateflow创建的复杂控制逻辑有效地结合到Simulink的模型中。
在MATLAB产品族中,自动化的代码生成工具主要有Real-Time Workshop(RTW)和Stateflow Coder,这两种代码生成工具可以直接将Simulink的模型框图和Stateflow的状态图转换成高效优化的程序代码。利用RTW生成的代码简洁、可靠、易读。目前RTW支持生成标准的C语言代码,并且具备了生成其他语言代码的能力。整个代码的生成、编译以及相应的目标下载过程都是自动完成的,用户只需使用鼠标单击相应按钮即可。MathWorks公司针对不同的实时或非实时操作系统平台,开发了相应的目标选项,配合不同的软硬件系统,可以完成快速控制原型(Rapid Control Prototype)开发、硬件在回路的实时仿真(Hardware-in-Loop)、产品代码生成等工作。
另外,MATLAB开放性的可扩充体系允许用户开发自定义的系统目标,利用Real-Time Workshop Embedded Coder能够直接将Simulink的模型转变成效率优化的产品级代码。代码不仅可以是浮点的,还可以是定点的。
MATLAB开放的产品体系使MATLAB成为诸多领域的开发首选软件,并且,MATLAB还具有500余家第三方合作伙伴,分布在科学计算、机械动力、化工、计算机通信、汽车、金融等领域。接口方式包括了联合建模、数据共享、开发流程衔接等。