1.1 MATLAB简介
1.1.1 MATLAB的简单介绍
MATLAB 是美国 MathWorks 公司出品的商业数学软件,是用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括 MATLAB 和 Simulink 两大部分。
MATLAB是矩阵实验室(Matrix Laboratory)的简称,和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中的数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解决问题要比用C、FORTRAN等语言简捷得多,并且Mathworks也吸收了像Maple等软件的优点,使 MATLAB 成为一个强大的数学软件。在 MATLAB 的新版本中也加入了对 C、FORTRAN、C++、Java的支持,可以直接调用,用户也可以将自己编写的实用程序导入MATLAB函数库中方便以后调用。此外许多的 MATLAB 爱好者都编写了一些经典的程序,用户可以直接进行下载使用。
1.1.2 MATLAB的特点
MATLAB有如下特点。
(1)此高级语言可用于技术计算;
(2)此开发环境可对代码、文件和数据进行管理;
(3)交互式工具可以按迭代的方式探查、设计及求解问题;
(4)数学函数可用于线性代数、统计、傅里叶分析、筛选、优化以及数值积分等;
(5)二维和三维图形函数可用于可视化数据;
(6)各种工具可用于构建自定义的图形用户界面;
(7)各种函数可将基于MATLAB的算法与外部应用程序和语言(如 C、C++、Fortran、Java、COM 以及 Microsoft Excel)集成。
1.1.3 MATLAB的优势
MATLAB编程有如下优势。
1.友好的工作平台和编程环境
MATLAB由一系列工具组成,这些工具方便用户使用MATLAB的函数和文件。其中许多工具采用的是图形用户界面,包括 MATLAB 桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着 MATLAB 的商业化以及软件本身的不断升级,MATLAB 的用户界面也越来越精致,更加接近 Windows 的标准界面,人机交互性更强,操作也更简单。而且新版本的 MATLAB 提供了完整的联机查询及帮助系统,极大地方便了用户使用。MATLAB简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
2.简单易用的程序语言
MATLAB 是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出,可面向对象编程。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件),然后再一起运行。新版本的MATLAB语言是基于C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式,使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入科学研究及工程计算各个领域的重要原因。
3.强大的科学计算及数据处理能力
MATLAB是一个包含大量计算算法的集合,其拥有600多个工程中要用到的数学运算函数,可以方便地实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和 C++。在计算要求相同的情况下,使用 MATLAB 的编程工作量会大大减少。MATLAB 的这些函数集,从最简单最基本的函数到诸如矩阵、特征向量、快速傅里叶变换等复杂函数都包括。其函数所能解决的问题大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅里叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。
4.出色的图形处理功能
MATLAB具有方便的数据可视化功能,可以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图像处理、动画和表达式作图,可用于科学计算和工程绘图。新版本的 MATLAB 对整个图形处理功能做了很大的改进和完善,它不仅完善了一般数据可视化软件都具有的功能(如二维曲线和三维曲面的绘制和处理等),而且对于一些其他软件所没有的功能(如图形的光照处理、色度处理以及四维数据的表现等)也表现出了出色的处理能力。同时对一些特殊的可视化要求,如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还在图形用户界面(GUI)的制作上做了很大的改善,对这方面有特殊要求的用户也可以得到满足。
5.应用广泛的模块集合工具箱
MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通信、电力系统仿真等都在工具箱(Toolbox)家族中有了自己的一席之地。
6.实用的程序接口和发布平台
新版本的MATLAB可以利用MATLAB编译器和C/C++数学库及图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。MATLAB允许用户编写可以和自己进行交互的 C 或 C++语言程序。另外,MATLAB 网页服务程序还容许在 Web 应用中使用自己的MATLAB 数学和图形程序。MATLAB 的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是 MATLAB 函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。
7.应用软件开发(包括用户界面)
MATLAB 的开发环境可使用户更方便地控制多个文件和图形窗口;在编程方面支持函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能;在输入/输出方面,可以直接连接Excel和HDF5。
1.1.4 MATLAB的常用工具箱
MATLAB包括拥有数百个内部函数的主包和三十几种工具箱。工具箱又可以分为功能工具箱和学科工具箱。功能工具箱用来扩充 MATLAB 的符号计算、可视化建模仿真、文字处理及实时控制等功能。学科工具箱是专业性比较强的工具箱,控制工具箱、信号处理工具箱、通信工具箱等都属于此类。
开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主工具箱文件和各种工具箱都是可读可修改的文件,用户通过修改源程序的或加入自己编写的程序可构造新的专用工具箱。
MATLAB常用工具箱如下。
(1)MATLAB Main Toolbox——MATLAB主工具箱;
(2)Control System Toolbox——控制系统工具箱;
(3)Communication Toolbox——通信工具箱;
(4)Financial Toolbox——财政金融工具箱;
(5)System Identification Toolbox——系统辨识工具箱;
(6)Fuzzy Logic Toolbox——模糊逻辑工具箱;
(7)Higher-Order Spectral Analysis Toolbox——高阶谱分析工具箱;
(8)Image Processing Toolbox——图像处理工具箱;
(9)LMI Control Toolbox——线性矩阵不等式工具箱;
(10)Model Predictive Control Toolbox——模型预测控制工具箱;
(11)μ-Analysis and Synthesis Toolbox——μ分析工具箱;
(12)Neural Network Toolbox——神经网络工具箱;
(13)Optimization Toolbox——优化工具箱;
(14)Partial Differential Toolbox——偏微分方程工具箱;
(15)Robust Control Toolbox——鲁棒控制工具箱;
(16)Signal Processing Toolbox——信号处理工具箱;
(17)Spline Toolbox——样条工具箱;
(18)Statistics Toolbox——统计工具箱;
(19)Symbolic Math Toolbox——符号数学工具箱;
(20)Simulink Toolbox——动态仿真工具箱;
(21)Wavele Toolbox——小波工具箱。
1.1.5 MATLAB的版本
20世纪70年代,美国新墨西哥大学计算机科学系主任Cleve Moler为了减轻学生编程的负担,用 FORTRAN 编写了最早的 MATLAB。1984年由 Little、Moler、Steve Bangert 合作成立的MathWorks公司正式把MATLAB推向市场。到20世纪90年代,MATLAB已成为国际控制界的标准计算软件。
各种版本及发布时间如表1-1所示。
表1-1 MATLAB版本及发布时间
续表