第2章 常用分析软件介绍
本章将对机械、控制、液压等不同领域常用的几种商用分析软件进行简单介绍,这几种典型分析软件也是本书后续章节需要用到的。本书所有实例均可以在MATLAB 2007a、ADAMS 2005、RecurDyn 6.3、AMESim 7A、iSIGHT 9.0以上版本软件调试通过。
2.1 MATLAB软件介绍
2.1.1 MATLAB的发展历程和影响
在20世纪70年代后期,时任美国新墨西哥大学计算机科学系主任的Cleve Moler教授为了减轻学生的编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用Fortran编写的萌芽状态的MATLAB。MATLAB名字由MATrix和LABoratory两词的前三个字母组合而成。
经过几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。此后,MATLAB的内核采用C语言编写,还新增了数据图视功能。
MATLAB以软件形式出现后,仅短短几年,就以其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰。在时间进入20世纪90年代的时候,MATLAB已经成为国际控制界认可的标准计算软件。
20世纪90年代初期,在国际上30多个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头,而Mathematica和Maple则分居符号计算软件的前两名。
MathWorks公司于1993年推出了适用于Windows操作系统的MATLAB 4.0版本,4.x版在继承和发展其原有的数值计算和图形可视能力的同时,开发了一些新的工具包。
(1)推出了Simulink。这是一个交互式操作的动态系统建模、仿真、分析集成环境。它提供了图形化的求解各种数学模型的工具。
(2)开发了能够与外部进行直接数据交换的组件,使MATLAB具有进行实时数据分析、处理和硬件开发的能力。
(3)推出了符号计算工具包。1993年,MathWorks公司从加拿大滑铁卢大学购得Maple的使用权,以Maple为“引擎”开发了Symbolic Math Toolbox 1.0。
1997年春,MATLAB 5.0版问世,与4.x相比,现今的MATLAB拥有更丰富的数据类型和结构、更友好的面向对象开发工具箱。从2006年开始MATLAB改为每年的上下半年出两个版本,即MATLAB 2006a和MATLAB 2006b。
在国际学术界和大学,MATLAB都得到了广泛的应用,在大学教科书中,如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信等课程的教科书都把MATLAB作为学习内容,可以说MATLAB已经成为工科专业硕士生、博士生必须掌握的基本工具。
在众多工业部门和设计研究单位,MATLAB被认为是进行开发研究的首选软件工具。如美国National Instruments公司信号测量、分析软件LabVIEW,Cadence公司信号和通信分析设计软件SPW等,或者利用MATLAB进行二次开发,或者以MATLAB为主要支撑。又如HP公司的VXI硬件,TM公司的DSP,Gage公司的各种硬卡、仪器等都支持MATLAB的直接应用。
2.1.2 MATLAB/Simulink功能简介
MATLAB是一种用于算法开发、数据可视化、数据分析及数值计算的高级技术计算语言和交互式环境,使用MATLAB,可以比使用传统的编程语言(如C、C++和Fortran)更快地解决工程计算问题。
MATLAB是MATLAB产品家族的基础,它提供了基本的数学算法,例如,矩阵运算、数值分析算法,MATLAB集成了二维和三维图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言——M语言,利用M语言可以通过编写脚本或者函数文件实现用户自己的算法。MATLAB Compiler是一种编译工具,它能够将那些M语言编写的函数文件编译生成为函数库、可执行文件COM组件等。这样就可以扩展MATLAB的功能,使MATLAB能够同其他高级编程语言(如C/C++语言)进行混合应用,取长补短,以提高程序的运行效率,丰富程序开发的手段。利用M语言还开发了相应的MATLAB专业工具箱函数供用户直接使用,这些工具箱应用的算法是开放的、可扩展的,用户不仅可以查看其中的算法,还可以针对一些算法进行修改,甚至允许开发自己的算法扩充工具箱的功能。目前,MATLAB产品的工具箱有40多个,分别涵盖了数据获取、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。
MATLAB的应用范围非常广,包括信号和图像处理、通信、控制系统设计、测试和测量、财务建模和分析,以及计算生物学等众多应用领域。附加的工具箱(单独提供的专用MATLAB函数集)扩展了MATLAB环境,以解决这些应用领域内特定类型的问题。
目前,MATLAB产品族可以用来进行以下工作:
(1)数值分析;
(2)数值和符号计算;
(3)工程与科学绘图;
(4)控制系统的设计;
(5)数字图像处理;
(6)数字信号处理;
(7)通信系统设计与仿真;
(8)财务与金融工程。
Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境,2.1.4节将单独介绍。
2.1.3 MATLAB功能特点
1.数学运算功能强大
MATLAB可用于线性代数中的所有向量、矩阵相关运算,数值分析中的线性和非线性方程组求解,常微分方程组和偏微分方程组的数值计算等。MATLAB数值运算的每个元素都可看做复数,运算包括加、减、乘、除、函数运算等;通过MATLAB的符号工具箱,可以解决在数学、应用科学和工程计算领域中常遇到的符号计算问题,因此几乎所有的工程领域都可以看到MATLAB的应用。
如,做矩阵乘法 c=ab,若采用其他高级语言实现,则需要调用子程序,或编写烦琐的多重循环来实现,在MATLAB中则直接输入
a=[12;34]; b=[123;456]; c=ab
短短简明的三条语句就可以计算出结果。
2.编程效率高
MATLAB语言规则与书写数学公式相似,命令表达方式与标准的数学表达式非常相近。MATLAB既有基本的库函数,又有大量针对各专业应用的工具箱,使MATLAB适用于不同领域。这些库函数和工具箱都可以直接调用,因而使用非常方便,甚至许多专用工具箱都已做成交互式的界面,更加方便用户的使用。
MATLAB的Notebook为用户提供了强大的文字处理功能,允许用户从Word访问MATLAB的数值计算和可视化结果。
如系统传递函数为,求阶跃响应(图2.1)。在MATLAB中输入以下语句,立即可以求出结果
num=[1 2] den=[1 2 3] G=tf(num,den) step(G)
图2.1 阶跃响应
3.强大的联机帮助功能
当用户有了明确的问题定义,要想在MATLAB中找到相应的解决方法非常容易,只要在帮助中搜索相应问题关键字,就可以找到相关内容。MATLAB的帮助不仅仅提供解决方法的简明扼要的理论知识,还会有简单的使用例题让使用者模仿操作,进一步还有各学科领域、各种工具的DEMO,这是一般软件无法比拟的。
2.1.4 Simulink简介及特点
Simulink是MathWorks公司随MATLAB一道发行的功能非常强大的动态系统建模和仿真通用软件包,该软件为用户的建模和仿真过程提供了完善、灵活的可视化设计和调试环境,并且包含丰富的基本功能模块库和众多专业领域的工具箱。
Simulink提供了一个建立动态系统模型方块图的图形用户接口(GUI),这个创建过程只要单击和拖动鼠标操作就能完成,特别对于复杂系统建模更快捷,而且用户可以立即看到系统的仿真结果,并且Simulink还提供了虚拟现实工具箱,如图2.2所示,用户可以采用数学模型直接驱动几何模型,进行所需的各种动画演示,使仿真更形象、逼真。
Simulink可以处理的系统包括线性、非线性系统;离散、连续及混合系统;单任务、多任务离散事件系统。
Simulink模块库按功能可以分为以下8类子库:
(1)Continuous(连续模块)。
(2)Discrete(离散模块)。
(3)Function & Tables(函数和平台模块)。
(4)Math(数学模块)。
(5)Nonlinear(非线性模块)。
(6)Signals & Systems(信号和系统模块)。
(7)Sinks(接收器模块)。
(8)Sources(信号源模块)。
图2.2 Simulink模型驱动的虚拟现实工具箱
Simulink的主要特点有如下三点。
1)交互式的图形编辑器用于组合和管理直观的模块图
用户只需要知道系统原理的数学方程就可以搭建系统仿真模型,无须编程,有成熟高效的求解算法库,直接从中选择合适的求解算法即可。
如微分方程 ′y=ty|t=0=0,若采用数值方法编程求解,则需编写或调用求解微分方程的数值算法,但在Simulink中只需要建立以下模型,就可以得到形象的输出,如图2.3所示。
图2.3 模型及解
2)提供API用于与其他仿真程序的连接或与手写代码集成
支持M语言和C语言方式的功能模块扩展,提供了S函数模块,该模块可以采用Fortran、C或C++语言或M语言编写,S函数使Simulink建模方式更灵活,具有更强的复杂系统建模功能,可以生成实时仿真代码,直接用于半实物仿真。
3)丰富的可扩充的预定义模块库
Simulink具有开放式结构,用户可以自定义模块库,拥有自己的图标,同时Simulink还具有功能强大的各种工具箱,如神经网络,模糊数学,控制系统开发,图像处理等。