首页 > 编程笔记
MATLAB是什么
MATLAB 是美国 MathWorks 公司出品的商业数学软件,主要包括 MATLAB 和 Simulink 两大部分。在数值计算方面,MATLAB 在数学类科技应用软件中首屈一指,与 Mathematica、Maple 并称为三大数学软件。
MATLAB 将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的高科技计算和交互式环境中,为科学研究、工程设计以及其他必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,代表了当今国际科学计算软件的先进水平。
MATLAB 可以进行矩阵运算、绘制函数和数据图像、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。
20 世纪 70 年代中期,新墨西哥大学计算机科学系的 Cleve Moler 博士和他的同事在美国国家科学基金的资助下研究开发了调用 LINPACK 和 EISPACK 的 FORTRAN 子程序库。
LINPACK 是解线性方程的 FORTRAN 程序库,EISPACK 则是解特征值问题的程序库,这两个程序库代表着当时矩阵计算的最高水平。
20 世纪 70 年代后期,时任美国新墨西哥大学计算机科学系主任的 Cleve Moler 教授为了减轻学生的编程负担,特意编写了使用方便的 LINPACK 和 EISPACK 的接口程序,取名为 MATLAB。
在此后的数年里,MATLAB 在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传,同时 MATLAB 也成了应用数学界的术语。
1983 年早春,Cleve Moler 到斯坦福大学访问,身为工程师的 John Little 意识到 MATLAB 具有潜在的广阔应用领域,应该在工程计算方面有所作为,于是同 Cleve Moler 及 Steve Bangert 合作开发了第二代专业版 MATLAB。从这一代开始,MATLAB 的核心就采用 C 语言编写,也是从这一代开始,MATLAB 不仅具有数值计算功能,而且具有了数据可视化功能。
1984 年,MathWorks 公司成立,把 MATLAB 推向市场,并继续对 MATLAB 进行研制和开发。
MATLAB 在市场上的出现为各国科学家开发本学科相关软件提供了基础。例如,在 MATLAB 问世不久,原来控制领域的一些封闭式软件包(如英国的 UMIST、瑞典的 LUND 和 SIMNON、德国的 KEDDC)就纷纷被淘汰,而改以 MATLAB 为平台加以重建。
到 20 世纪 90 年代初期,在国际上 30 多个数学类科技应用软件中,MATLAB 在数值计算方面独占鳌头,而 Mathematica 和 Maple 则分居符号计算软件的前两名。Mathcad 因其提供计算、图形、文字处理的统一环境而深受学生欢迎。
1993 年,MATLAB 的第一个 Windows 版本问世。同年,支持 Windows 3.x 的具有划时代意义的 MATLAB 4.0 推出。与以前的版本相比,MATLAB 4.0 做了很大改进,特别是增加了 Simulink、Control、Neural Network、Optimization、Signal Processing、Spline、Robust Control 等工具箱,使得 MATLAB 的应用范围更加广泛。
同年,MathWorks 公司又推出了 MATLAB 4.1,首次开发了 Symbolic Math 符号运算工具箱。它的升级版本 MATLAB 4.2c 在用户中得到广泛的应用。
1997 年夏,MathWorks 公司推出了 Windows 95 下的 MATLAB 5.0 和 Simulink 2.0 版本。该版本在继承 MATLAB 4.2c 和 Simulink 1.3 版本功能的基础上,实现了真正的 32 位运算,数值计算更快,图形表现更丰富有效,编程更简洁直观,用户界面十分友好。
2000 年下半年,MathWorks 公司推出了 MATLAB 6.0(R12)的试用版,并于 2001 年推出了正式版。紧接着,2002 年又推出了 MATLAB 6.5(R13) 版本,并升级 Simulink 到 5.0 版本。
2004 年秋,MathWorks 公司又推出了 MATLAB 7.0(R14) Service Pack1,新的版本在原版本的基础上做了大幅改进,同时对很多工具箱做了相应的升级,使得 MATLAB 功能更强,应用更简便。
从 2006 年开始,MATLAB 分别在每年的 3 月和 9 月进行两次产品发布,每次发布都涵盖产品家族中的所有模块,包含已有产品的新特性和 bug 修订,以及新产品的发布。其中,3 月发布的版本被称为“a”,9 月发布的版本被称为“b”,如 2006 年的两个版本分别是 R2006a 和 R2006b。
值得一提的是,在 2006 年 3 月 1 日发布的 R2006a 版本中,增加了两个新产品模块(Builder for .net 和 SimHydraulics),增加了对 64 位 Windows 的支持。其中,Builder for .net(也就是 .net 工具箱)扩展了 MATLAB Compiler 的功能,集成了 MATLAB Builder for COM 的功能,可以将 MATLAB 函数打包,使网络程序员可以通过 C#、VB.net 等语言访问这些函数,并将源自 MATLAB 函数的错误作为一个标准的管理异常来处理。
2020 年 3 月,MathWorks 发布了 MATLAB R2020a 版本(以下简称 MATLAB 2020)和 Simulink 产品系列的 Release 2020(R2020)版本。2021 年 3 月,MathWorks 发布了 MATLAB 和 Simulink 产品系列的最新版本 R2021a。
时至今日,经过 MathWorks 公司的不断升级,MATLAB 已经发展成为适合多学科、多种工作平台的功能强大的大型软件。在欧美高校,MATLAB 已经成为诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等高级课程的基本教学工具,也是相关专业大学生、硕士生、博士生必须熟练使用的基本工具。在国际学术界,MATLAB 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上(尤其是信息科学刊物),都可以看到 MATLAB 的应用。在研究单位和工业部门,MATLAB 被认为是进行高效研究、开发的首选软件工具。
例如,美国 National Instruments 公司的信号测量、分析软件 LabVIEW,Cadence 公司的信号和通信分析设计软件 SPW 等,或者直接建立在 MATLAB 之上,或者以 MATLAB 为主要支撑;又如,HP 公司的 VXI 硬件、TM 公司的 DSP、Gage 公司的各种硬卡和仪器等都接受 MATLAB 的支持。可以说,无论你从事工程技术领域的什么专业,都能在 MATLAB 里找到合适的功能。
在进行数学计算时,最难处理的就是算法的选择,这个问题利用 MATLAB 工具可以轻松解决。MATLAB 中许多功能函数都带有算法的自适应能力,且算法先进,大大解决了用户的后顾之忧,同时也大大弥补了 MATLAB 程序因为非可执行文件而影响其速度的缺陷。另外,MATLAB 提供了一套完善的图形可视化功能,为用户展示自己的计算结果提供了广阔的空间。
无论一种语言的功能多么强大,如果语言本身非常艰深,那么它绝对不是成功的语言。而 MATLAB 是成功的,它允许用户以数学形式的语言编写程序,比 BASIC、FORTRAN 和 C语言等语言更接近于书写计算公式的思维方式。
MATLAB 能发展到今天这种程度,其可扩充性和可开发性起着不可估量的作用。MATLAB 本身就像一个解释系统,以一种解释执行的方式对其中的函数程序进行执行。这样的最大好处是 MATLAB 完全成了一个开放的系统,用户可以方便地查看函数的源程序,也可以方便地开发自己的程序,甚至创建自己的工具箱。另外,MATLAB 还可以方便地与 FORTRAN、C 等语言链接,以充分利用各种资源。
有必要特别强调的是,MATLAB 程序文件是纯文件,任何文字处理软件都能对其进行编写和修改,从而使得程序易于调试,人机交互性强。
除具备卓越的数值计算能力之外,MATLAB 还具有专业的符号计算和文字处理、2D 和 3D 图形绘制、可视化建模仿真和实时控制等功能。
MATLAB 典型的应用主要包括如下几个方面:
MATLAB Compiler 是一种编译工具,它能够将 MATLAB 编写的函数文件生成函数库或可执行文件 COM 组件等,以方便其他高级语言(如 C++、C# 等)进行调用,不仅扩展了 MATLAB 的应用范围,还将 MATLAB 的开发效率与其他高级语言的运行效率结合起来,取长补短,丰富了程序开发的手段。
Simulink 是基于 MATLAB 的可视化设计环境,可以用来对各种系统进行建模、分析和仿真。它的建模范围面向任何能够使用数学来描述的系统,如航空动力学系统、航天控制制导系统、通信系统等。Simulink 提供了利用鼠标拖放的方法建立系统框图模型的图形界面,还提供了丰富的功能模块,利用它几乎可以不用书写代码就能完成整个动态系统的建模工作。
此外,MATLAB 还有基于有限状态机理论的 Stateflow 交互设计工具以及自动化的代码设计生成工具 Real-Time Workshop 和 Stateflow Coder。
MATLAB 将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的高科技计算和交互式环境中,为科学研究、工程设计以及其他必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,代表了当今国际科学计算软件的先进水平。
MATLAB 可以进行矩阵运算、绘制函数和数据图像、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通信、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB系统的发展历程
MATLAB 的英文全称是 MATrix LABoratary,原意为矩阵实验室,最初是一种专门用于矩阵数值计算的软件。20 世纪 70 年代中期,新墨西哥大学计算机科学系的 Cleve Moler 博士和他的同事在美国国家科学基金的资助下研究开发了调用 LINPACK 和 EISPACK 的 FORTRAN 子程序库。
LINPACK 是解线性方程的 FORTRAN 程序库,EISPACK 则是解特征值问题的程序库,这两个程序库代表着当时矩阵计算的最高水平。
20 世纪 70 年代后期,时任美国新墨西哥大学计算机科学系主任的 Cleve Moler 教授为了减轻学生的编程负担,特意编写了使用方便的 LINPACK 和 EISPACK 的接口程序,取名为 MATLAB。
在此后的数年里,MATLAB 在多所大学里作为教学辅助软件使用,并作为面向大众的免费软件广为流传,同时 MATLAB 也成了应用数学界的术语。
1983 年早春,Cleve Moler 到斯坦福大学访问,身为工程师的 John Little 意识到 MATLAB 具有潜在的广阔应用领域,应该在工程计算方面有所作为,于是同 Cleve Moler 及 Steve Bangert 合作开发了第二代专业版 MATLAB。从这一代开始,MATLAB 的核心就采用 C 语言编写,也是从这一代开始,MATLAB 不仅具有数值计算功能,而且具有了数据可视化功能。
1984 年,MathWorks 公司成立,把 MATLAB 推向市场,并继续对 MATLAB 进行研制和开发。
MATLAB 在市场上的出现为各国科学家开发本学科相关软件提供了基础。例如,在 MATLAB 问世不久,原来控制领域的一些封闭式软件包(如英国的 UMIST、瑞典的 LUND 和 SIMNON、德国的 KEDDC)就纷纷被淘汰,而改以 MATLAB 为平台加以重建。
到 20 世纪 90 年代初期,在国际上 30 多个数学类科技应用软件中,MATLAB 在数值计算方面独占鳌头,而 Mathematica 和 Maple 则分居符号计算软件的前两名。Mathcad 因其提供计算、图形、文字处理的统一环境而深受学生欢迎。
1993 年,MATLAB 的第一个 Windows 版本问世。同年,支持 Windows 3.x 的具有划时代意义的 MATLAB 4.0 推出。与以前的版本相比,MATLAB 4.0 做了很大改进,特别是增加了 Simulink、Control、Neural Network、Optimization、Signal Processing、Spline、Robust Control 等工具箱,使得 MATLAB 的应用范围更加广泛。
同年,MathWorks 公司又推出了 MATLAB 4.1,首次开发了 Symbolic Math 符号运算工具箱。它的升级版本 MATLAB 4.2c 在用户中得到广泛的应用。
1997 年夏,MathWorks 公司推出了 Windows 95 下的 MATLAB 5.0 和 Simulink 2.0 版本。该版本在继承 MATLAB 4.2c 和 Simulink 1.3 版本功能的基础上,实现了真正的 32 位运算,数值计算更快,图形表现更丰富有效,编程更简洁直观,用户界面十分友好。
2000 年下半年,MathWorks 公司推出了 MATLAB 6.0(R12)的试用版,并于 2001 年推出了正式版。紧接着,2002 年又推出了 MATLAB 6.5(R13) 版本,并升级 Simulink 到 5.0 版本。
2004 年秋,MathWorks 公司又推出了 MATLAB 7.0(R14) Service Pack1,新的版本在原版本的基础上做了大幅改进,同时对很多工具箱做了相应的升级,使得 MATLAB 功能更强,应用更简便。
从 2006 年开始,MATLAB 分别在每年的 3 月和 9 月进行两次产品发布,每次发布都涵盖产品家族中的所有模块,包含已有产品的新特性和 bug 修订,以及新产品的发布。其中,3 月发布的版本被称为“a”,9 月发布的版本被称为“b”,如 2006 年的两个版本分别是 R2006a 和 R2006b。
值得一提的是,在 2006 年 3 月 1 日发布的 R2006a 版本中,增加了两个新产品模块(Builder for .net 和 SimHydraulics),增加了对 64 位 Windows 的支持。其中,Builder for .net(也就是 .net 工具箱)扩展了 MATLAB Compiler 的功能,集成了 MATLAB Builder for COM 的功能,可以将 MATLAB 函数打包,使网络程序员可以通过 C#、VB.net 等语言访问这些函数,并将源自 MATLAB 函数的错误作为一个标准的管理异常来处理。
2020 年 3 月,MathWorks 发布了 MATLAB R2020a 版本(以下简称 MATLAB 2020)和 Simulink 产品系列的 Release 2020(R2020)版本。2021 年 3 月,MathWorks 发布了 MATLAB 和 Simulink 产品系列的最新版本 R2021a。
时至今日,经过 MathWorks 公司的不断升级,MATLAB 已经发展成为适合多学科、多种工作平台的功能强大的大型软件。在欧美高校,MATLAB 已经成为诸如应用代数、数理统计、自动控制、数字信号处理、模拟与数字通信、时间序列分析、动态系统仿真等高级课程的基本教学工具,也是相关专业大学生、硕士生、博士生必须熟练使用的基本工具。在国际学术界,MATLAB 已经被确认为准确、可靠的科学计算标准软件。在许多国际一流学术刊物上(尤其是信息科学刊物),都可以看到 MATLAB 的应用。在研究单位和工业部门,MATLAB 被认为是进行高效研究、开发的首选软件工具。
例如,美国 National Instruments 公司的信号测量、分析软件 LabVIEW,Cadence 公司的信号和通信分析设计软件 SPW 等,或者直接建立在 MATLAB 之上,或者以 MATLAB 为主要支撑;又如,HP 公司的 VXI 硬件、TM 公司的 DSP、Gage 公司的各种硬卡和仪器等都接受 MATLAB 的支持。可以说,无论你从事工程技术领域的什么专业,都能在 MATLAB 里找到合适的功能。
MATLAB的特点
MATLAB 自产生之日起,就以其强大的功能和良好的开放性而在科学计算诸多软件中独占鳌头。学会 MATLAB 可以方便地处理诸如矩阵变换及运算、多项式运算、微积分运算、线性与非线性方程求解、常微分方程求解、偏微分方程求解、插值与拟合、统计及优化等问题。在进行数学计算时,最难处理的就是算法的选择,这个问题利用 MATLAB 工具可以轻松解决。MATLAB 中许多功能函数都带有算法的自适应能力,且算法先进,大大解决了用户的后顾之忧,同时也大大弥补了 MATLAB 程序因为非可执行文件而影响其速度的缺陷。另外,MATLAB 提供了一套完善的图形可视化功能,为用户展示自己的计算结果提供了广阔的空间。
无论一种语言的功能多么强大,如果语言本身非常艰深,那么它绝对不是成功的语言。而 MATLAB 是成功的,它允许用户以数学形式的语言编写程序,比 BASIC、FORTRAN 和 C语言等语言更接近于书写计算公式的思维方式。
MATLAB 能发展到今天这种程度,其可扩充性和可开发性起着不可估量的作用。MATLAB 本身就像一个解释系统,以一种解释执行的方式对其中的函数程序进行执行。这样的最大好处是 MATLAB 完全成了一个开放的系统,用户可以方便地查看函数的源程序,也可以方便地开发自己的程序,甚至创建自己的工具箱。另外,MATLAB 还可以方便地与 FORTRAN、C 等语言链接,以充分利用各种资源。
有必要特别强调的是,MATLAB 程序文件是纯文件,任何文字处理软件都能对其进行编写和修改,从而使得程序易于调试,人机交互性强。
MATLAB的主要功能
随着 MathWorks 公司对 MATLAB 软件的不断升级,目前的 MATLAB 已是功能相当完善的一款优秀的集数据计算、程序设计、图形可视化、建模仿真等于一体的软件。下面主要介绍 MATLAB 较为常用的一些功能。1) 数据计算
MATLAB 数据计算功能强大,基于矩阵的计算机制使其在线性代数、矩阵分析、数值分析、方程求解、傅里叶分析、数值微积分等多个方面得到良好的应用,且易获得精确可靠的结果。2) 符号计算
MATLAB 提供了专门的工具箱用于符号运算,使用户可以直接对字符串符号进行分析计算,从而进一步扩展了计算机解决数学问题的能力。符号计算在公式推导、逻辑计算等方面具有重要的应用。3) 图形功能
MATLAB 提供了数据的可视化功能,包括常用二维和三维图形的绘制,用户可以方便地绘制各种图形。同时,使用 MATLAB 的绘制功能,还可以方便地编辑图形,设置相应的图形注释等,进而优化绘制的图形。4) 建模仿真
MATLAB 是一款优秀的建模仿真软件,用户利用 MATLAB 的该项功能可以很方便地模拟现实。MATLAB 的 SIMULINK 部分是仿真领域常用的工具,可以较为真实地模拟实际条件或者一些不可能实现的条件下的场景,减少实现真实场景不必要的开支。5) 程序设计
MATLAB 的程序设计功能完善,为面向对象的程序设计机制。MATLAB 包含了大量的函数库,供用户直接调用。同时,MATLAB程序设计功能为用户提供了方便的调试工具,在程序出错后,也会出现详细的错误信息。6) 界面设计
MATLAB 软件提供了方便的界面设计功能,用户可以利用该功能完成相应的界面设计。MATLAB 中的图形界面设计多为界面操作,无须大量复杂的算法。MATLAB 的界面设计功能可以进一步提高 MATLAB 所设计程序的可操作性。7) 与其他程序的集成与扩展
MATLAB 软件与其他编程语言具有较好的链接能力,其应用接口编程技术为其他编程语言与 MATLAB 软件的交互使用提供了良好的应用平台。MATLAB 软件还支持与常用的 Office 操作软件的交互使用,可以在 Word 或 Excel 中直接使用 MATLAB 的各项功能。MATLAB的应用领域
MATLAB 将高性能的数值计算、可视化和编程集成在一个易用的开放式环境中,在此环境下,用户可以按照符合其思维习惯的方式和熟悉的数学表达形式书写程序,并且可以非常容易地对其功能进行扩充。除具备卓越的数值计算能力之外,MATLAB 还具有专业的符号计算和文字处理、2D 和 3D 图形绘制、可视化建模仿真和实时控制等功能。
MATLAB 典型的应用主要包括如下几个方面:
- 数值分析和计算。
- 算法开发。
- 数据采集。
- 系统建模、仿真和原型化。
- 数据分析、探索和可视化。
- 工程和科学绘图。
- 数字图像处理。
- 应用软件开发,包括图形用户界面的建立。
MATLAB Compiler 是一种编译工具,它能够将 MATLAB 编写的函数文件生成函数库或可执行文件 COM 组件等,以方便其他高级语言(如 C++、C# 等)进行调用,不仅扩展了 MATLAB 的应用范围,还将 MATLAB 的开发效率与其他高级语言的运行效率结合起来,取长补短,丰富了程序开发的手段。
Simulink 是基于 MATLAB 的可视化设计环境,可以用来对各种系统进行建模、分析和仿真。它的建模范围面向任何能够使用数学来描述的系统,如航空动力学系统、航天控制制导系统、通信系统等。Simulink 提供了利用鼠标拖放的方法建立系统框图模型的图形界面,还提供了丰富的功能模块,利用它几乎可以不用书写代码就能完成整个动态系统的建模工作。
此外,MATLAB 还有基于有限状态机理论的 Stateflow 交互设计工具以及自动化的代码设计生成工具 Real-Time Workshop 和 Stateflow Coder。