1.1 MATLAB
MATLAB 是由 MathWorks 公司开发的一种主要用于数值计算及可视化图形处理的工程语言,是当今最优秀的科技应用软件之一。它将数值分析、矩阵运算、图形图像处理、信号处理和仿真等诸多强大的功能集成在较易使用的交互计算机环境之中,为科学研究、工程应用提供了一种功能强、效率高的编程工具。它拥有强大的科学计算、可视化、简单易用、开放式可扩展环境等功能,特别是所附带的 30 多种支持面向不同领域的工具箱,使得它在许多科学领域中成为计算机辅助设计、分析、算法研究和应用开发的基本工具。
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月份推出的新产品。
1.1.2 MATLAB软件的特点
MATLAB集计算、可视化及编程于一身。在MATLAB中,无论是问题的提出还是结果的表达都采用我们习惯的数学描述方法,而不需要用传统的编程语言进行前后处理。这一特点使MATLAB成为了数学分析、算法开发及应用程序开发的良好环境。MATLAB是MathWorks产品家族中所有产品的基础。MATLAB的主要特点如下。
1.强大的科学计算功能
MATLAB拥有500多种数学、统计及工程函数,可使用户立刻实现强大的数学计算功能。由各领域的专家学者们开发的数值计算程序,使用了安全、成熟、可靠的算法,从而保证了最大的运算速度和可靠的运算结果。
2.直观灵活的语言
MATLAB不仅是一套打包好的函数库,同时也是一种高级的、面向对象的编程语言。使用MATLAB 可事半功倍地开发自己的程序。MATLAB 自身的许多函数,实际上也包括所有的工具箱函数,都是用M文件实现的。
3.先进的可视化工具
MATLAB提供了功能强大的、交互式的二维和三维绘图功能。可创建富有表现力的彩色图形。可视化工具包括:曲面渲染(Surface Rendering)、线框图、伪彩图、光源、三维等高线图、图像显示、动画、体积可视化等。
4.开放性、可扩展性强
M文件是可见的MATLAB程序,所以我们可以查看源代码。开放的系统设计使我们能够检查算法的正确性,修改已存在的函数,或者加入自己的新部件。
5.便捷的绘图功能
MATLAB 的绘图功能是十分方便的,它有一系列绘图函数(命令),例如,线性坐标、对数坐标、半对数坐标及极坐标。只需调用不同的绘图函数(命令),即可在图上标出图题、XY轴标注,格(栅)绘制也需要调用相应的命令,简单易行。另外,在调用绘图函数时调整自变量可以绘出不同颜色的点、线、复线或多重线。这种为科学研究着想的设计是通用的编程语言所不能及的。
6.众多面向领域应用的工具箱和模块集
MATLAB的工具箱加强了对工程及科学中特殊应用的支持。工具箱和MATLAB一样是完全用户化的,可扩展性强。将某个或某几个工具箱与 MATLAB 联合使用,可以得到一个功能强大的计算组合包,满足用户的特殊要求。
1.1.3 MATLAB组成
MATLAB作为MathWorks产品家族的核心,它主要由五大部分组成,分别为MATLAB语言(the MATLAB Language)、MATLAB工作环境(the MATLAB Working Environment)、MATLAB数学函数库(the MATLAB Math Library)、图形句柄系统(Handle Graphics)和MATLAB应用程序接口(the MATLAB Application Interface)。下面对它们分别进行介绍。
1.MATLAB语言
MATLAB语言是一种以矩阵(Matrix)和阵列(Array)为基本编程单元的,拥有完整的控制语句、数据结构、函数编写与调用格式和输出功能的,具有面向对象程序设计特征的高级程序语言。读者不但可以利用它方便快捷地完成小规模的算法验证、程序开发和调试工作,而且可以使用它进行大规模、高效的复杂应用程序设计。
2.MATLAB工作环境
MATLAB 工作环境简单来说就是一系列实用工具的集合,它不但包括了操作各种工作空间中变量的工具和管理数据输入输出的方法,而且包括了开发调试 M 文件和 MATLAB应用程序的集成环境,使用起来极为方便。关于MATLAB工作环境第2章将展开讨论,在此先不作介绍。
3.MATLAB数学函数库
MATLAB数学函数库是大量各种形式的数学函数和算法的集合,它不仅包括了最基本的初等函数,如sum、sine、cosine和复数运算等,而且包含了大量复杂的高级函数和算法,如贝塞尔(Bassel)函数,快速傅里叶变换和矩阵求逆等。用户在编写自己的MATLAB程序时,可以轻松地调用这些函数和算法,从而极大地方便了算法的开发。所有这些函数按类别分别存放在MATLAB工具箱目录下的8个子目录中,如表1-1所示。
表1-1 MATLAB数学函数库的分类和组织
4.MATLAB应用程序接口
MATLAB的外部接口使得MATLAB可与外部设备和程序实现数据交互和程序移植,可以扩充MATLAB强大的数值计算和图形显示功能,从而弥补了其执行效率较低的缺点,同时增强了其他应用程序进行软件开发的功能,提高了软件开发效率。MATLAB 接口工具不仅使MATLAB可以十分方便地与其他应用程序交换数据和信息,还实现了与其他程序函数和算法的交互。所以,通过MATLAB接口编程,可以充分利用现有资源,更容易地编写出功能强大、结构简洁的应用程序。MATLAB主要提供了MEX文件、MAT文件、MATLAB计算引擎、COM和DDE、Web服务、硬件接口和Excel生成器、Java生成器和.NET生成器等形式的接口。
5.图形句柄系统
Handle Graphics为MathWorks公司的注册商标,是MATLAB的图形系统。它在包含了大量高级的2D和3D数据可视化、图形显示、动画生成和图像处理命令的同时,还提供了许多低级的图形命令,允许用户按照自己的需求显示图形和定制应用程序图形用户接口,既方便又灵活。具体的函数分为5大类,分别放置在MATLAB工具箱下5个不同的目录内,如表1-2所示。
表1-2 MATLAB图形函数的分类和组织