fbpx
维基百科

MATLAB

MATLAB(Matrix Laboratory,矩阵实验室)是由美国The MathWorks公司出品的商业数学软件。MATLAB是一种用于算法开发、数据可视化数据分析以及数值计算的高级技术计算语言和交互式环境。除矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可用来创建用户界面,以及调用其它语言(包括CC++JavaPythonFORTRAN)编写的程序。

MATLAB
L-shaped membrane商标[1]
MATLAB屏幕截图
開發者迈斯沃克
首次发布1984年,​39年前​(1984
目前版本
  • R2022b (2022年8月24日;穩定版本)[2]
编程语言C语言C++Java
操作系统WindowsmacOSLinux[3]
系統平台IA-32x86-64
类型数值计算
许可协议专有软件商业软件
网站mathworks.com
MATLAB
编程范型多范式函數指令式过程式面向对阵列编程
設計者克里夫·莫勒尔
實作者迈斯沃克
发行时间20世纪70年代末
目前版本
  • R2022b (2022年8月24日;穩定版本)[2]
型態系統动态
文件扩展名.m
網站mathworks.com
啟發語言
影響語言

MATLAB主要用于数值运算,但利用为数众多的附加工具箱,它也适合不同领域的应用,例如控制系统设计与分析、影像處理、深度學習、信号处理与通讯、金融建模和分析等。另外还有配套软件包Simulink提供可视化开发环境,常用于系统模拟、动态/嵌入式系统开发等方面。

在R2017b後的MATLAB版本更釋出了深度學習的工具,使其能夠視覺化的快速建立AI模型,並透過各種轉碼器,部屬於嵌入式硬體之中。

截至2020年,MATLAB在全球擁有超過400萬用戶。MATLAB用戶來自工程、科學和經濟學領域。

历史

1970年代末到80年代初,时任美国新墨西哥大學教授的克里夫·莫勒尔为了让学生更方便地使用LINPACKEISPACK英语EISPACK(需要通过FORTRAN编程来实现,但当时学生们并无相关知识),独立编写了第一个版本的MATLAB。这个版本的MATLAB只能进行简单的矩阵运算,例如矩阵转置、计算行列式和本征值,此版本软件分发出大约两三百份[8][9]

1984年,杰克·李特克里夫·莫勒尔斯蒂夫·班格尔特英语Steve Bangert合作成立了MathWorks公司,正式把MATLAB推向市场[9][10]。MATLAB最初是由莫勒尔用FORTRAN编写的,李特和班格尔特花了约一年半的时间用C重新编写了MATLAB并增加了一些新功能,同时,李特还开发了第一个系统控制工具箱,其中一些代码到现在仍然在使用[9]。C语言版的面向MS-DOS系统的MATLAB 1.0在拉斯维加斯举行的IEEE決策与控制会议(IEEE Conference on Decision and Control)正式推出[9][11][a],它的第一份订单只售出了10份拷贝[9],而到了现在,根据MathWorks自己的数据[12],目前世界上180多个国家的超过三百万工程师和科学家在使用MATLAB和Simulink。

1992年,学生版MATLAB推出;1993年,Microsoft Windows版MATLAB面世;1995年,推出Linux[9]

主要功能

MATLAB的主要提供以下功能[13]

  • 可用于技术计算的高级语言
  • 可对代码、文件和数据进行管理的开发环境
  • 可以按迭代的方式探查、设计及求解问题的交互式工具
  • 可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等的数学函数
  • 可用于可视化数据的二维和三维图形函数
  • 可用于构建自定义的图形用户界面的各种工具
  • 可将基于MATLAB的算法与外部应用程序和语言(如C、C++、Fortran、Java、COM以及Microsoft Excel)集成的各种函数

工具箱

MATLAB的一个重要特点是可扩展性。作为Simulink和其它所有MathWorks产品的基础,MATLAB可以通过附加的工具箱(Toolbox)进行功能扩展,每一个工具箱就是实现特定功能的函数的集合[b]。MathWorks提供的工具箱分以下几大类[14]

  • 数学和优化
  • 统计和数据分析
  • 影像處理和電腦視覺
  • 深度學習與機器學習
  • 控制系统设计和分析
  • 信号处理和通讯
  • 测试和测量
  • 金融建模和分析
  • 应用程序部署
  • 数据库连接和报表
  • 分布式计算

这些工具箱大多是用开放式的MATLAB语言写成,用户不但可以查看源代码,还可以可根据自己的需要进行修改以及创建自定义函数。此外,常有用户在MATLAB Central: File Exchange (页面存档备份,存于互联网档案馆)发布自己编写的MATLAB程序或工具箱,供他人自由下载使用。

MATLAB语言

MATLAB语言是一种交互性的数学脚本语言,其语法与C/C++类似。它支持包括逻辑(boolean)、数值(numeric)、文本(text)、函数柄(function handle)和异质数据容器(heterogeneous container)在内的15种数据类型,每一种类型都定义为矩阵或阵列的形式(0维至任意高维)[15]

执行MATLAB代码的最简单方式是在MATLAB程序的命令窗口(Command Window)的提示符处(>> )输入代码,MATLAB会即时返回操作结果(如果有的话)。此时, MATLAB可以看作是一个交互式的数学终端,简单来说,一个功能强大的“计算器”。MATLAB代码同样可以保存在一个以.m为后缀名的文本文件中,然后在命令窗口或其它函数中直接调用。

变量与赋值

MATLAB的变量名字跟许多程序语言一样,严格区分大小写,例如,varVARVar是三个不同的变量。另外,MATLAB中变量名字必须以字母为首字母,3var_var等是非法的变量名。变量由赋值运算符(=)定义. MATLAB是动态检查的,这意味着变量可以在未定义其类型的情况下赋值并且变量的类型也可以改变,除非将变量看做是符号对象[16]。变量值可以取自常量,计算中的其他变量的值,或某一函数的输出。例如:

>> x = 17 x =  17 >> x = 'hat' x = hat >> x = [3*4, pi/2] x =  12.0000 1.5708 >> y = 3*sin (x) y =  -1.6097 3.0000 

向量和矩阵

MATLAB的意思是"矩阵实验室",因此它提供了许多创建向量,矩阵和多维数组的便捷的方式。在MATLAB自己的语言中,一个向量(vector)指的是一维(1×NN×1)矩阵,在其他语言中通常被叫做数组(array)。矩阵(matrix)通常指的是2-维数组,例如m×n数组其中mn大于或等于1。多维数组通常指的是维数大于2的数组。

需要注意的是,虽然MATLAB用C语言重写,但是在矩阵存储方式上却和FORTRAN保持一致,两者使用的均为列优先存储,而非行优先存储[c]。在进行较大的矩阵运算时,这一差别对性能的影响是不应忽略的。[有歧义]

MATLAB提供了定义简单数组的简单方式,使用语法:初值:增量:终值。例如:

>> array = 1:2:9 array =  1 3 5 7 9 

定义了一个名为array的变量(或向已存在的变量array赋予一个新值),其值为包含1, 3, 5, 7, 9的一个向量。即数组由1开始(初值),每次以增量2(增量)递增,当达到9(终值)时停止。

>> array = 1:3:9 array =  1 4 7 

在该语法中增量可被省略(这样仅剩一个冒号),这时增量采用默认值1。

>> ari = 1:5 ari =  1 2 3 4 5 

由于默认增量为1,上面的语句对变量ari用1, 2, 3, 4, 5的向量赋值。
在MATLAB内定义矩阵同样很简单,例如:

>> M = [1,2,3;4,5,6;7,8,9] M =  1 2 3  4 5 6  7 8 9 


在MATLAB内存取矩阵元素同样非常简单,例如:

>> M = [1,2,3;4,5,6;7,8,9] M =  1 2 3  4 5 6  7 8 9 >> M2,2ans =  5 >> M2,:ans =  4 5 6 >> M:,1ans =  1  4  7 >> M2,2 = 10 M =  1 2 3  4 10 6  7 8 9 


若要對矩阵內所有元素做同樣的運算,如次方倍,則需要在運算元前面加上".",例如:

>> M = [1,2,3;4,5,6;7,8,9] >> M .^2  ans =  1 4 9  16 25 36  49 64 81 


若不在運算元前面加上"."則代表矩陣運算:

>> M = [1,2,3;4,5,6;7,8,9] M ^2 = M * M =  30 36 42  66 81 96  102 126 150 

代数/符号运算

利用MATLAB的符号数学工具箱(Symbolic Math Toolbox)[d]可以进行代数或符号运算,如分解多项式因子和解代数方程:

>> syms x y >> A=x^3-3*x^2*y+3*x*y^2-y^3; >> factor (A) ans =x - y)^3 

把多项式 简化成了 

>> solve'x^2 - 2*x - 4 = 0'ans =  1 - 5^(1/2  5^(1/2 + 1 

求得方程 的两个解为  

图形和图形用户界面编程

MATLAB中常用的绘图命令是plot,例如描绘一个在[-4,4]区间内的正弦函数:

>> x = -4:0.05:4; >> y = sin (x); >> plot(x,y) 

 

利用plot命令也可以在同一幅图中描绘多个函数图形:

>> x = 0:.01:2*pi; >> y1 = sin (x); >> y2 = sin(2*x); >> y3 = sin(4*x); >> plot(x, [y1; y2; y3]) >> legend('y=sin(x)', 'y=sin((2x)','y=sin(4x)') 

 

用MATLAB的画图命令可以生成复杂的三维图形[e]

>> t = linspace(0, 2*pi, 512); >> [u,v] = meshgrid(t); >> a = -0.4; b = .5; c = .1; >> n = 3; >> x =(a*(1 - v/(2*pi)) .*(1+cos(u)) + c) .* cos(n*v); >> y =(a*(1 - v/(2*pi)) .*(1+cos(u)) + c) .* sin(n*v); >> z = b*v/(2*pi) + a*(1 - v/(2*pi)) .* sin(u); >> surf(x,y,z,y) >> axis off >> axis equal >> colormap(hsv(1024)) >> shading interp >> material shiny >> lighting phong >> camlight('left', 'infinite') >> view([-160 25]) 
 

版本歷史

到7.1版为止,MATLAB的释放编号均以数字来命名,例如R7,R12.1,R14 SP1等;从7.2版开始,释放编号以年份来命名,每年3月份推出的用a表示,9月份推出的则以b表示,例如R2006a代表2006年3月推出的版本,R2009b指2009年下半年推出的版本[17]

版本 发行编号 年份
MATLAB 1.0 暂时不明 1984年
MATLAB 2 1986年
MATLAB 3 1987年
MATLAB 3.5 1990年
MATLAB 4 1992年
MATLAB 4.2c R7 1994年
MATLAB 5.0 R8 1996年
MATLAB 5.1 R9 1997年
MATLAB 5.1.1 R9.1
MATLAB 5.2 R10 1998年
MATLAB 5.2.1 R10.1
MATLAB 5.3 R11 1999年
MATLAB 5.3.1 R11.1
MATLAB 6.0 R12 2000年
MATLAB 6.1 R12.1 2001年
MATLAB 6.5 R13 2002年
MATLAB 6.5.1 R13SP1 2003年
MATLAB 6.5.2 R13SP2
MATLAB 7 R14 2004年
MATLAB 7.0.1 R14SP1
MATLAB 7.0.4 R14SP2 2005年
MATLAB 7.1 R14SP3
MATLAB 7.2 R2006a 2006年
MATLAB 7.3 R2006b
MATLAB 7.4 R2007a 2007年
MATLAB 7.5 R2007b
MATLAB 7.6 R2008a 2008年
MATLAB 7.7 R2008b
MATLAB 7.8 R2009a 2009年
MATLAB 7.9 R2009b
MATLAB 7.10 R2010a 2010年
MATLAB 7.11 R2010b
MATLAB 7.12 R2011a 2011年
MATLAB 7.13 R2011b
MATLAB 7.14 R2012a 2012年
MATLAB 8.0 R2012b
MATLAB 8.1 R2013a 2013年
MATLAB 8.2 R2013b
MATLAB 8.3 R2014a 2014年
MATLAB 8.4 R2014b
MATLAB 8.5 R2015a 2015年
MATLAB 8.6 R2015b
MATLAB 9.0 R2016a 2016年
MATLAB 9.1 R2016b
MATLAB 9.2 R2017a 2017年
MATLAB 9.3 R2017b
MATLAB 9.4 R2018a 2018年
MATLAB 9.5 R2018b
MATLAB 9.6 R2019a 2019年
MATLAB 9.7 R2019b
MATLAB 9.8 R2020a 2020年
MATLAB 9.9 R2020b
MATLAB 9.10 R2021a 2021年
MATLAB 9.11 R2021b
MATLAB 9.12 R2022a 2022年
MATLAB R2022b

从2014a版起,Matlab界面支持中文[18]

其它科学计算软件

商业软件

Maple

Maple是Waterloo Maple Inc.(简称Maplesoft)开发的商业计算机代数系统,用于快速计算、开发设计表单、教学基本概念或建立高保真模拟模型等。最新版本是2018年3月发布的Maple 2018.0,分Personal(个人版),Professional(专业版),Academic(学术版),Government(政府版)和Student(学生版)。

Mathematica

Mathematica是斯蒂芬·沃爾夫勒姆开发的科学计算软件,开发工作现由Wolfram Research公司负责。最新版本是2019年4月16日发布的Mathematica 12.0。[19]

LabVIEW

LabVIEW是美国国家仪器公司开发的可视化编程平台,主要用于数据采集,仪器控制和工业自动化。最新版本是2021年8月发布的LabVIEW 2021。

开源软件

FreeMat

FreeMat是一个与MATLAB和IDL很类似的数值计算平台及程序语言。最新版本是2009年10月发布的FreeMat 4.0

GNU Octave

GNU Octave是一種主要用於數值計算的高級語言。它除了提供數值方法解決線性和非線性問題的命令介面,還提供了一種與MATLAB大抵兼容的語言。最新版本是2019年3月1日发布的5.1.0。

Scilab

Scilab是一个交互性的数值运算平台,主要用于工程和科学应用方面,例如航空航天、汽车、能源、金融、化学、生物、医学、国防等。最新版本是5.4.0。

ScicosLab

ScicosLab英语ScicosLab是由一些曾在INRIAENPC参与Scilab开发的研究人员,在Scilab BUILD4版本的基础上开发出來的GTK+版本,它集成了建模/模拟工具Scicos[f]及其它数量众多的工具箱,被认为是“惟一一款可以与商业软件MATLAB/Simulink及MATRIXx/SysstemBuild媲美的开源软件”。最新稳定版本是4.4.1。

JAMA

JAMA英语JAMA (JAMA : A Java Matrix Package英语JAMA : A Java Matrix Package),一种Java语言编程工具包。目前最新1.0.3版本,是2012年11月9日发布的。

NumPy與SciPy

NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算,此外也針對陣列運算提供大量的數學函式函式庫

SciPy是一個開源,基於NumPy的Python演算法庫和數學工具包,包含的模組有最佳化線性代數積分插值、特殊函式、快速傅立葉變換訊號處理圖像處理常微分方程求解和其他科學與工程中常用的計算。

Julia

Julia是一种高级通用語言。


中國大陸受限

2020年6月12日,美国对位列实体清单中的哈爾濱工業大學哈爾濱工程大學等高等院校实施制裁,禁止使用MATLAB。[20]

注释

  1. ^ 在其創始人Moler的回顧文獻中,誤將會議名稱的"Decision"誤植成"Design"[9],而在IEEE該社群官方的歷史紀錄文件中,有明確提到MATLAB第一次公開展示的正確會議名稱[11].
  2. ^ MathWorks官方提供的工具箱需通过支付相对应的费用单独获取。
  3. ^ 以一个定义为为M的3x3矩阵为例:列优先存储指的是MATLAB先保存第一列的3个元素,然后保存第二列的,最后保存第三列的元素,从而这9个矩阵元素在MATLAB中的排序是从1到9,所以在调用矩阵元素时,M(2)指的是第一列的第二个元素,M(6)指的是第二列第三个元素(当然这两个元素也可以用二维的方式调用,M(2)对应M(1,2),M(6)对应M(2,3));行优先存储则刚好相反,先保存第一行的3个元素,再保存第二行和第三行的元素。
  4. ^ 从4.9版(对应于MATLAB R2007b+)开始,新的MuPAD运算引擎代替了之前版本使用的Maple引擎,详情见Version 4.9(R2007b+)Symbolic Math Toolbox Software
  5. ^ 本例子基於Davis, Timothy A.; Kermit Sigmon. MATLAB Primer 7th. Chapman & Hall/CRC. 2005. ISBN 1-58488-523-8 (英语). 一书中的范例,形状、颜色、角度等参数有修改。
  6. ^ 第一个版本的Scicos是完全用Scilab语言写成的,但后续版本逐步改用C语言进行开发。由于在Scilab 5版本中出现稳定性及性能问题,开发人员决定此后Scicos仅在ScicosLab中进行后续开发。详情见Scilab/Scicos history

参考文献

引用

  1. ^ The L-Shaped Membrane. MathWorks. 2003 [February 7, 2014]. (原始内容于2019-04-23). 
  2. ^ 2.0 2.1 https://www.mathworks.com/help/pdf_doc/matlab/rn.pdf.
  3. ^ System Requirements and Platform Availability. MathWorks. [August 14, 2013]. (原始内容于2016-10-13). 
  4. ^ (PDF). Computer History Museum. [December 6, 2016]. (原始内容 (PDF)存档于2014-12-27). So APL, Speakeasy, LINPACK, EISPACK, and PL0 were the predecessors to MATLAB. 
  5. ^ Bezanson, Jeff; Karpinski, Stefan; Shah, Viral; Edelman, Alan. Why We Created Julia. Julia Language. February 14, 2012 [December 1, 2016]. (原始内容于2019-02-19). 
  6. ^ Eaton, John W. (PDF). Texas-Wisconsin Modeling and Control Consortium. May 21, 2001 [December 1, 2016]. (原始内容 (PDF)存档于2017-08-09). 
  7. ^ . Scilab. [December 1, 2016]. (原始内容存档于2016-12-01). 
  8. ^ Thomas Haigh. The History of Numerical Analysis and Scientific Computing (PDF). Santa Barbara, California. 2004-03-08: 64–65 [2010-04-29]. (原始内容 (PDF)于2018-10-12) (英语). 
  9. ^ 9.0 9.1 9.2 9.3 9.4 9.5 9.6 Cleve Moler. (PDF). January 2006 [2010-04-30]. (原始内容 (PDF)存档于2009-04-11) (英语). 
  10. ^ MathWorks Founders. MathWorks. [2010-04-29]. (原始内容于2010-04-16). 
  11. ^ 11.0 11.1 Schrader, C.B.; Spong, M.W. The IEEE Conference on Decision and Control - tracing CDC history. IEEE Control Systems Magazine. 2004-12, 24 (6): 56 – 66 [Jan 14, 2011]. doi:10.1109/MCS.2004.1368481. (原始内容于2015-01-09). 
  12. ^ About The MathWorks. MathWorks. [2010-04-29]. (原始内容于2010-05-02). 
  13. ^ . MathWorks中国. [2010-04-29]. (原始内容存档于2010-08-06). 
  14. ^ MATLAB附加产品. MathWorks中国. [2010-04-29]. (原始内容于2011-06-06). 
  15. ^ . MathWorks. [2010-05-01]. (原始内容存档于2010-05-05). 
  16. ^ . MathWorks. [2010-05-01]. (原始内容存档于2010-05-05). 
  17. ^ MATLAB Release Notes. MathWorks. [2010-04-30]. (原始内容于2010-05-02). 
  18. ^ MATLAB Release Notes. MathWorks. [2014-03-06]. (原始内容于2014-03-14). 
  19. ^ Stephen Wolfram. Version 12 Launches Today! (And It’s a Big Jump for Wolfram Language and Mathematica). 2019年4月16日 [2019年11月19日]. (原始内容于2020年4月9日). 
  20. ^ MATLAB被禁用:美国投向我国高校科研的第一颗炸弹!. 欧界头条. [2020-06-29]. (原始内容于2020-10-01). 

外部链接

参见

matlab, matrix, laboratory, 矩阵实验室, 是由美国the, mathworks公司出品的商业数学软件, 是一种用于算法开发, 数据可视化, 数据分析以及数值计算的高级技术计算语言和交互式环境, 除矩阵运算, 绘制函数, 数据图像等常用功能外, 还可用来创建用户界面, 以及调用其它语言, 包括c, java, python, fortran, 编写的程序, shaped, membrane商标, 屏幕截图開發者迈斯沃克首次发布1984年, 39年前, 1984, 目前版本r2022b, 2. MATLAB Matrix Laboratory 矩阵实验室 是由美国The MathWorks公司出品的商业数学软件 MATLAB是一种用于算法开发 数据可视化 数据分析以及数值计算的高级技术计算语言和交互式环境 除矩阵运算 绘制函数 数据图像等常用功能外 MATLAB还可用来创建用户界面 以及调用其它语言 包括C C Java Python FORTRAN 编写的程序 MATLABL shaped membrane商标 1 MATLAB屏幕截图開發者迈斯沃克首次发布1984年 39年前 1984 目前版本R2022b 2022年8月24日 穩定版本 2 编程语言C语言 C Java操作系统Windows macOS Linux 3 系統平台IA 32 x86 64类型数值计算许可协议专有软件 商业软件网站mathworks comMATLAB编程范型多范式 函數 指令式 过程式 面向对 阵列编程設計者克里夫 莫勒尔實作者迈斯沃克发行时间20世纪70年代末目前版本R2022b 2022年8月24日 穩定版本 2 型態系統动态 弱文件扩展名 m網站mathworks com啟發語言APL EISPACK 英语 EISPACK LINPACK PL 0 英语 PL 0 Speakeasy 4 影響語言Julia 5 Octave 6 Scilab 7 維基教科書中有關MATLAB Programming的文本MATLAB主要用于数值运算 但利用为数众多的附加工具箱 它也适合不同领域的应用 例如控制系统设计与分析 影像處理 深度學習 信号处理与通讯 金融建模和分析等 另外还有配套软件包Simulink提供可视化开发环境 常用于系统模拟 动态 嵌入式系统开发等方面 在R2017b後的MATLAB版本更釋出了深度學習的工具 使其能夠視覺化的快速建立AI模型 並透過各種轉碼器 部屬於嵌入式硬體之中 截至2020年 MATLAB在全球擁有超過400萬用戶 MATLAB用戶來自工程 科學和經濟學領域 目录 1 历史 2 主要功能 2 1 工具箱 3 MATLAB语言 3 1 变量与赋值 3 2 向量和矩阵 3 3 代数 符号运算 4 图形和图形用户界面编程 5 版本歷史 6 其它科学计算软件 6 1 商业软件 6 1 1 Maple 6 1 2 Mathematica 6 1 3 LabVIEW 6 2 开源软件 6 2 1 FreeMat 6 2 2 GNU Octave 6 2 3 Scilab 6 2 4 ScicosLab 6 2 5 JAMA 6 2 6 NumPy與SciPy 6 2 7 Julia 7 中國大陸受限 8 注释 9 参考文献 9 1 引用 10 外部链接 11 参见历史 编辑1970年代末到80年代初 时任美国新墨西哥大學教授的克里夫 莫勒尔为了让学生更方便地使用LINPACK及EISPACK 英语 EISPACK 需要通过FORTRAN编程来实现 但当时学生们并无相关知识 独立编写了第一个版本的MATLAB 这个版本的MATLAB只能进行简单的矩阵运算 例如矩阵转置 计算行列式和本征值 此版本软件分发出大约两三百份 8 9 1984年 杰克 李特 克里夫 莫勒尔和斯蒂夫 班格尔特 英语 Steve Bangert 合作成立了MathWorks公司 正式把MATLAB推向市场 9 10 MATLAB最初是由莫勒尔用FORTRAN编写的 李特和班格尔特花了约一年半的时间用C重新编写了MATLAB并增加了一些新功能 同时 李特还开发了第一个系统控制工具箱 其中一些代码到现在仍然在使用 9 C语言版的面向MS DOS系统的MATLAB 1 0在拉斯维加斯举行的IEEE決策与控制会议 IEEE Conference on Decision and Control 正式推出 9 11 a 它的第一份订单只售出了10份拷贝 9 而到了现在 根据MathWorks自己的数据 12 目前世界上180多个国家的超过三百万工程师和科学家在使用MATLAB和Simulink 1992年 学生版MATLAB推出 1993年 Microsoft Windows版MATLAB面世 1995年 推出Linux版 9 主要功能 编辑MATLAB的主要提供以下功能 13 可用于技术计算的高级语言 可对代码 文件和数据进行管理的开发环境 可以按迭代的方式探查 设计及求解问题的交互式工具 可用于线性代数 统计 傅立叶分析 筛选 优化以及数值积分等的数学函数 可用于可视化数据的二维和三维图形函数 可用于构建自定义的图形用户界面的各种工具 可将基于MATLAB的算法与外部应用程序和语言 如C C Fortran Java COM以及Microsoft Excel 集成的各种函数工具箱 编辑 MATLAB的一个重要特点是可扩展性 作为Simulink和其它所有MathWorks产品的基础 MATLAB可以通过附加的工具箱 Toolbox 进行功能扩展 每一个工具箱就是实现特定功能的函数的集合 b MathWorks提供的工具箱分以下几大类 14 数学和优化 统计和数据分析 影像處理和電腦視覺 深度學習與機器學習 控制系统设计和分析 信号处理和通讯 测试和测量 金融建模和分析 应用程序部署 数据库连接和报表 分布式计算这些工具箱大多是用开放式的MATLAB语言写成 用户不但可以查看源代码 还可以可根据自己的需要进行修改以及创建自定义函数 此外 常有用户在MATLAB Central File Exchange 页面存档备份 存于互联网档案馆 发布自己编写的MATLAB程序或工具箱 供他人自由下载使用 MATLAB语言 编辑MATLAB语言是一种交互性的数学脚本语言 其语法与C C 类似 它支持包括逻辑 boolean 数值 numeric 文本 text 函数柄 function handle 和异质数据容器 heterogeneous container 在内的15种数据类型 每一种类型都定义为矩阵或阵列的形式 0维至任意高维 15 执行MATLAB代码的最简单方式是在MATLAB程序的命令窗口 Command Window 的提示符处 gt gt 输入代码 MATLAB会即时返回操作结果 如果有的话 此时 MATLAB可以看作是一个交互式的数学终端 简单来说 一个功能强大的 计算器 MATLAB代码同样可以保存在一个以 m为后缀名的文本文件中 然后在命令窗口或其它函数中直接调用 变量与赋值 编辑 MATLAB的变量名字跟许多程序语言一样 严格区分大小写 例如 var VAR和Var是三个不同的变量 另外 MATLAB中变量名字必须以字母为首字母 3var var等是非法的变量名 变量由赋值运算符 定义 MATLAB是动态检查的 这意味着变量可以在未定义其类型的情况下赋值并且变量的类型也可以改变 除非将变量看做是符号对象 16 变量值可以取自常量 计算中的其他变量的值 或某一函数的输出 例如 gt gt x 17 x 17 gt gt x hat x hat gt gt x 3 4 pi 2 x 12 0000 1 5708 gt gt y 3 sin x y 1 6097 3 0000 向量和矩阵 编辑 MATLAB的意思是 矩阵实验室 因此它提供了许多创建向量 矩阵和多维数组的便捷的方式 在MATLAB自己的语言中 一个向量 vector 指的是一维 1 N或N 1 矩阵 在其他语言中通常被叫做数组 array 矩阵 matrix 通常指的是2 维数组 例如m n数组其中m和n大于或等于1 多维数组通常指的是维数大于2的数组 需要注意的是 虽然MATLAB用C语言重写 但是在矩阵存储方式上却和FORTRAN保持一致 两者使用的均为列优先存储 而非行优先存储 c 在进行较大的矩阵运算时 这一差别对性能的影响是不应忽略的 有歧义 MATLAB提供了定义简单数组的简单方式 使用语法 初值 增量 终值 例如 gt gt array 1 2 9 array 1 3 5 7 9 定义了一个名为array的变量 或向已存在的变量array赋予一个新值 其值为包含1 3 5 7 9的一个向量 即数组由1开始 初值 每次以增量2 增量 递增 当达到9 终值 时停止 gt gt array 1 3 9 array 1 4 7 在该语法中增量可被省略 这样仅剩一个冒号 这时增量采用默认值1 gt gt ari 1 5 ari 1 2 3 4 5 由于默认增量为1 上面的语句对变量ari用1 2 3 4 5的向量赋值 在MATLAB内定义矩阵同样很简单 例如 gt gt M 1 2 3 4 5 6 7 8 9 M 1 2 3 4 5 6 7 8 9 在MATLAB内存取矩阵元素同样非常简单 例如 gt gt M 1 2 3 4 5 6 7 8 9 M 1 2 3 4 5 6 7 8 9 gt gt M 2 2 ans 5 gt gt M 2 ans 4 5 6 gt gt M 1 ans 1 4 7 gt gt M 2 2 10 M 1 2 3 4 10 6 7 8 9 若要對矩阵內所有元素做同樣的運算 如次方倍 則需要在運算元前面加上 例如 gt gt M 1 2 3 4 5 6 7 8 9 gt gt M 2 ans 1 4 9 16 25 36 49 64 81 若不在運算元前面加上 則代表矩陣運算 gt gt M 1 2 3 4 5 6 7 8 9 M 2 M M 30 36 42 66 81 96 102 126 150 代数 符号运算 编辑 利用MATLAB的符号数学工具箱 Symbolic Math Toolbox d 可以进行代数或符号运算 如分解多项式因子和解代数方程 gt gt syms x y gt gt A x 3 3 x 2 y 3 x y 2 y 3 gt gt factor A ans x y 3 把多项式A x 3 3 x 2 y 3 x y 2 y 3 displaystyle A x 3 3x 2 y 3xy 2 y 3 简化成了 x y 3 displaystyle x y 3 gt gt solve x 2 2 x 4 0 ans 1 5 1 2 5 1 2 1 求得方程x 2 2 x 4 0 displaystyle x 2 2x 4 0 的两个解为1 5 displaystyle 1 sqrt 5 和1 5 displaystyle 1 sqrt 5 图形和图形用户界面编程 编辑MATLAB中常用的绘图命令是plot 例如描绘一个在 4 4 区间内的正弦函数 gt gt x 4 0 05 4 gt gt y sin x gt gt plot x y 利用plot命令也可以在同一幅图中描绘多个函数图形 gt gt x 0 01 2 pi gt gt y1 sin x gt gt y2 sin 2 x gt gt y3 sin 4 x gt gt plot x y1 y2 y3 gt gt legend y sin x y sin 2x y sin 4x 用MATLAB的画图命令可以生成复杂的三维图形 e gt gt t linspace 0 2 pi 512 gt gt u v meshgrid t gt gt a 0 4 b 5 c 1 gt gt n 3 gt gt x a 1 v 2 pi 1 cos u c cos n v gt gt y a 1 v 2 pi 1 cos u c sin n v gt gt z b v 2 pi a 1 v 2 pi sin u gt gt surf x y z y gt gt axis off gt gt axis equal gt gt colormap hsv 1024 gt gt shading interp gt gt material shiny gt gt lighting phong gt gt camlight left infinite gt gt view 160 25 版本歷史 编辑到7 1版为止 MATLAB的释放编号均以数字来命名 例如R7 R12 1 R14 SP1等 从7 2版开始 释放编号以年份来命名 每年3月份推出的用a表示 9月份推出的则以b表示 例如R2006a代表2006年3月推出的版本 R2009b指2009年下半年推出的版本 17 版本 发行编号 年份MATLAB 1 0 暂时不明 1984年MATLAB 2 1986年MATLAB 3 1987年MATLAB 3 5 1990年MATLAB 4 1992年MATLAB 4 2c R7 1994年MATLAB 5 0 R8 1996年MATLAB 5 1 R9 1997年MATLAB 5 1 1 R9 1MATLAB 5 2 R10 1998年MATLAB 5 2 1 R10 1MATLAB 5 3 R11 1999年MATLAB 5 3 1 R11 1MATLAB 6 0 R12 2000年MATLAB 6 1 R12 1 2001年MATLAB 6 5 R13 2002年MATLAB 6 5 1 R13SP1 2003年MATLAB 6 5 2 R13SP2MATLAB 7 R14 2004年MATLAB 7 0 1 R14SP1MATLAB 7 0 4 R14SP2 2005年MATLAB 7 1 R14SP3MATLAB 7 2 R2006a 2006年MATLAB 7 3 R2006bMATLAB 7 4 R2007a 2007年MATLAB 7 5 R2007bMATLAB 7 6 R2008a 2008年MATLAB 7 7 R2008bMATLAB 7 8 R2009a 2009年MATLAB 7 9 R2009bMATLAB 7 10 R2010a 2010年MATLAB 7 11 R2010bMATLAB 7 12 R2011a 2011年MATLAB 7 13 R2011bMATLAB 7 14 R2012a 2012年MATLAB 8 0 R2012bMATLAB 8 1 R2013a 2013年MATLAB 8 2 R2013bMATLAB 8 3 R2014a 2014年MATLAB 8 4 R2014bMATLAB 8 5 R2015a 2015年MATLAB 8 6 R2015bMATLAB 9 0 R2016a 2016年MATLAB 9 1 R2016bMATLAB 9 2 R2017a 2017年MATLAB 9 3 R2017bMATLAB 9 4 R2018a 2018年MATLAB 9 5 R2018bMATLAB 9 6 R2019a 2019年MATLAB 9 7 R2019bMATLAB 9 8 R2020a 2020年MATLAB 9 9 R2020bMATLAB 9 10 R2021a 2021年MATLAB 9 11 R2021bMATLAB 9 12 R2022a 2022年MATLAB R2022b从2014a版起 Matlab界面支持中文 18 其它科学计算软件 编辑商业软件 编辑 Maple 编辑 主条目 Maple Maple是Waterloo Maple Inc 简称Maplesoft 开发的商业计算机代数系统 用于快速计算 开发设计表单 教学基本概念或建立高保真模拟模型等 最新版本是2018年3月发布的Maple 2018 0 分Personal 个人版 Professional 专业版 Academic 学术版 Government 政府版 和Student 学生版 Mathematica 编辑 主条目 Mathematica Mathematica是斯蒂芬 沃爾夫勒姆开发的科学计算软件 开发工作现由Wolfram Research公司负责 最新版本是2019年4月16日发布的Mathematica 12 0 19 LabVIEW 编辑 主条目 LabVIEW LabVIEW是美国国家仪器公司开发的可视化编程平台 主要用于数据采集 仪器控制和工业自动化 最新版本是2021年8月发布的LabVIEW 2021 开源软件 编辑 FreeMat 编辑 主条目 FreeMat FreeMat是一个与MATLAB和IDL很类似的数值计算平台及程序语言 最新版本是2009年10月发布的FreeMat 4 0 GNU Octave 编辑 主条目 GNU Octave GNU Octave是一種主要用於數值計算的高級語言 它除了提供數值方法解決線性和非線性問題的命令介面 還提供了一種與MATLAB大抵兼容的語言 最新版本是2019年3月1日发布的5 1 0 Scilab 编辑 主条目 Scilab Scilab是一个交互性的数值运算平台 主要用于工程和科学应用方面 例如航空航天 汽车 能源 金融 化学 生物 医学 国防等 最新版本是5 4 0 ScicosLab 编辑 主条目 ScicosLab ScicosLab 英语 ScicosLab 是由一些曾在INRIA和ENPC参与Scilab开发的研究人员 在Scilab BUILD4版本的基础上开发出來的GTK 版本 它集成了建模 模拟工具Scicos f 及其它数量众多的工具箱 被认为是 惟一一款可以与商业软件MATLAB Simulink及MATRIXx SysstemBuild媲美的开源软件 最新稳定版本是4 4 1 JAMA 编辑 主条目 Jama JAMA 英语 JAMA JAMA A Java Matrix Package 英语 JAMA A Java Matrix Package 一种Java语言编程工具包 目前最新1 0 3版本 是2012年11月9日发布的 NumPy與SciPy 编辑 主条目 NumPy和SciPy NumPy是Python語言的一個擴充程式庫 支援高階大量的維度陣列與矩陣運算 此外也針對陣列運算提供大量的數學函式函式庫 SciPy是一個開源 基於NumPy的Python演算法庫和數學工具包 包含的模組有最佳化 線性代數 積分 插值 特殊函式 快速傅立葉變換 訊號處理和圖像處理 常微分方程求解和其他科學與工程中常用的計算 Julia 编辑 主条目 Julia 编程语言 Julia是一种高级通用語言 中國大陸受限 编辑2020年6月12日 美国对位列实体清单中的哈爾濱工業大學 哈爾濱工程大學等高等院校实施制裁 禁止使用MATLAB 20 注释 编辑 在其創始人Moler的回顧文獻中 誤將會議名稱的 Decision 誤植成 Design 9 而在IEEE該社群官方的歷史紀錄文件中 有明確提到MATLAB第一次公開展示的正確會議名稱 11 MathWorks官方提供的工具箱需通过支付相对应的费用单独获取 以一个定义为为M的3x3矩阵为例 列优先存储指的是MATLAB先保存第一列的3个元素 然后保存第二列的 最后保存第三列的元素 从而这9个矩阵元素在MATLAB中的排序是从1到9 所以在调用矩阵元素时 M 2 指的是第一列的第二个元素 M 6 指的是第二列第三个元素 当然这两个元素也可以用二维的方式调用 M 2 对应M 1 2 M 6 对应M 2 3 行优先存储则刚好相反 先保存第一行的3个元素 再保存第二行和第三行的元素 从4 9版 对应于MATLAB R2007b 开始 新的MuPAD运算引擎代替了之前版本使用的Maple引擎 详情见Version 4 9 R2007b Symbolic Math Toolbox Software 本例子基於Davis Timothy A Kermit Sigmon MATLAB Primer 7th Chapman amp Hall CRC 2005 ISBN 1 58488 523 8 英语 一书中的范例 形状 颜色 角度等参数有修改 第一个版本的Scicos是完全用Scilab语言写成的 但后续版本逐步改用C语言进行开发 由于在Scilab 5版本中出现稳定性及性能问题 开发人员决定此后Scicos仅在ScicosLab中进行后续开发 详情见Scilab Scicos history参考文献 编辑引用 编辑 The L Shaped Membrane MathWorks 2003 February 7 2014 原始内容存档于2019 04 23 2 0 2 1 https www mathworks com help pdf doc matlab rn pdf System Requirements and Platform Availability MathWorks August 14 2013 原始内容存档于2016 10 13 An interview with CLEVE MOLER Conducted by Thomas Haigh On 8 and 9 March 2004 Santa Barbara California PDF Computer History Museum December 6 2016 原始内容 PDF 存档于2014 12 27 So APL Speakeasy LINPACK EISPACK and PL0 were the predecessors to MATLAB Bezanson Jeff Karpinski Stefan Shah Viral Edelman Alan Why We Created Julia Julia Language February 14 2012 December 1 2016 原始内容存档于2019 02 19 Eaton John W Octave Past Present and Future PDF Texas Wisconsin Modeling and Control Consortium May 21 2001 December 1 2016 原始内容 PDF 存档于2017 08 09 History Scilab December 1 2016 原始内容存档于2016 12 01 Thomas Haigh The History of Numerical Analysis and Scientific Computing PDF Santa Barbara California 2004 03 08 64 65 2010 04 29 原始内容存档 PDF 于2018 10 12 英语 9 0 9 1 9 2 9 3 9 4 9 5 9 6 Cleve Moler The Growth of MATLAB and The MathWorks over Two Decades PDF January 2006 2010 04 30 原始内容 PDF 存档于2009 04 11 英语 MathWorks Founders MathWorks 2010 04 29 原始内容存档于2010 04 16 11 0 11 1 Schrader C B Spong M W The IEEE Conference on Decision and Control tracing CDC history IEEE Control Systems Magazine 2004 12 24 6 56 66 Jan 14 2011 doi 10 1109 MCS 2004 1368481 原始内容存档于2015 01 09 About The MathWorks MathWorks 2010 04 29 原始内容存档于2010 05 02 MATLAB 7 10 简介及主要功能 MathWorks中国 2010 04 29 原始内容存档于2010 08 06 MATLAB附加产品 MathWorks中国 2010 04 29 原始内容存档于2011 06 06 Fundamental MATLAB Classes MathWorks 2010 05 01 原始内容存档于2010 05 05 Documentation for the MATLAB Variables MathWorks 2010 05 01 原始内容存档于2010 05 05 MATLAB Release Notes MathWorks 2010 04 30 原始内容存档于2010 05 02 MATLAB Release Notes MathWorks 2014 03 06 原始内容存档于2014 03 14 Stephen Wolfram Version 12 Launches Today And It s a Big Jump for Wolfram Language and Mathematica 2019年4月16日 2019年11月19日 原始内容存档于2020年4月9日 MATLAB被禁用 美国投向我国高校科研的第一颗炸弹 欧界头条 2020 06 29 原始内容存档于2020 10 01 外部链接 编辑維基教科書中的相關電子教程 MATLAB Programming维基共享资源中相关的多媒体资源 MATLABMATLAB官方網站 页面存档备份 存于互联网档案馆 MATLAB線上教材 页面存档备份 存于互联网档案馆 Matlab技术论坛 页面存档备份 存于互联网档案馆 線上執行Matlab語法 页面存档备份 存于互联网档案馆 矩阵实验室 MATLAB 新浪微博 页面存档备份 存于互联网档案馆 Matlab教學 页面存档备份 存于互联网档案馆 参见 编辑Maple Maxima Mathematica GNU Octave Scilab R語言 Origin Spyder 基於模型的設計 取自 https zh wikipedia org w index php title MATLAB amp oldid 73701842, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。