MATLAB（Matrix Laboratory，矩陣實驗室）是由美國 The MathWorks 公司出品的商業數學軟體。MATLAB 是一種用於演算法開發、資料視覺化、資料分析以及數值計算的高階技術計算語言和互動式環境。除矩陣運算、繪製函式 資料影像等常用功能外，MATLAB 還可用來建立使用者介面，以及呼叫其它語言（包括 C、C、Java、Python、FORTRAN）編寫的程式。 MATLAB 主要用於數值運算，但利用為數眾多的附加工具箱，它也適合不同領域的應用，例如控制系統設計與分析、影像處理、深度學習、訊號處理與通訊、金融建模和分析等。另外還有配套軟體包 Simulink 提供視覺化開發環境，常用於系統模擬、動態 嵌入式系統開發等方面。 在 R2017b 後的 MATLAB 版本更新釋出了深度學習的工具，使其能夠視覺化的快速建立 AI 模型，並透過各種轉碼器，部屬於嵌入式硬體之中。 截至 2020 年，MATLAB 在全球擁有超過 400 萬使用者。MATLAB 使用者來自工程、科學和經濟學領域。 歷史 1970 年代末到 80 年代初，時任美國新墨西哥大學教授的克里夫莫勒爾為了讓學生更方便地使用 LINPACK 及（需要透過 FORTRAN 程式設計來實現，但當時學生們並無相關知識），獨立編寫了第一個版本的 MATLAB。這個版本的 MATLAB 只能進行簡單的矩陣運算，例如矩陣轉置、計算行列式和本徵值，此版本軟體分發出大約兩三百份。 1984 年，傑克李特、克里夫莫勒爾和合作成立了 MathWorks 公司，正式把 MATLAB 推向市場。MATLAB 最初是由莫勒爾用 FORTRAN 編寫的，李特和班格爾特花了約一年半的時間用 C 重新編寫了 MATLAB 並增加了一些新功能，同時，李特還開發了第一個系統控制工具箱，其中一些程式碼到現在仍然在使用。C 語言版的面向 MSDOS 系統的 MATLAB 10 在拉斯維加斯舉行的 IEEE 決策與控制會議（IEEE Conference on Decision and Control）正式推出，它的第一份訂單隻售出了 10 份複製，而到了現在，根據 MathWorks 自己的資料，目前世界上 180 多個國家的超過三百萬工程師和科學家在使用 MATLAB 和 Simulink。 1992 年，學生版 MATLAB 推出；1993 年，Microsoft Windows 版 MATLAB 面世；1995 年，推出 Linux 版。 主要功能 MATLAB 的主要提供以下功能： 可用於技術計算的高階語言 可對程式碼、檔案和資料進行管理的開發環境 可以按迭代的方式探查、設計及求解問題的互動式工具 可用於線性代數、統計、傅立葉分析、篩選、最佳化以及數值積分等的數學函式 可用於視覺化資料的二維和三維圖形函式 可用於構建自定義的圖形使用者介面的各種工具 可將基於 MATLAB 的演算法與外部應用程式和語言（如 C、C、Fortran、Java、COM 以及 Microsoft Excel）整合的各種函式 工具箱 MATLAB 的一個重要特點是可擴充套件性。作為 Simulink 和其它所有 MathWorks 產品的基礎，MATLAB 可以透過附加的工具箱（Toolbox）進行功能擴充套件，每一個工具箱就是實現特定功能的函式的集合。MathWorks 提供的工具箱分以下幾大類： 數學和最佳化 統計和資料分析 影像處理和電腦視覺 深度學習與機器學習 控制系統設計和分析 訊號處理和通訊 測試和測量 金融建模和分析 應用程式部署 資料庫連線和報表 分散式計算 這些工具箱大多是用開放式的 MATLAB 語言寫成，使用者不但可以檢視原始碼，還可以可根據自己的需要進行修改以及建立自定義函式。此外，常有使用者在 MATLAB Central File Exchange 釋出自己編寫的 MATLAB 程式或工具箱，供他人自由下載使用。 MATLAB 語言 MATLAB 語言是一種互動性的數學指令碼語言，其語法與 CC 類似。它支援包括邏輯（boolean）、數值（numeric）、文字（text）、函式柄（function handle）和異質資料容器（heterogeneous container）在內的 15 種資料型別，每一種型別都定義為矩陣或陣列的形式（0 維至任意高維）。 執行 MATLAB 程式碼的最簡單方式是在 MATLAB 程式的命令視窗（Command Window）的提示符處輸入程式碼，MATLAB 會即時返回操作結果（如果有的話）。此時，MATLAB 可以看作是一個互動式的數學終端，簡單來說，一個功能強大的 計算器。MATLAB 程式碼同樣可以儲存在一個以m 為字尾名的文字檔案中，然後在命令視窗或其它函式中直接呼叫。 變數與賦值 MATLAB 的變數名字跟許多程式語言一樣，嚴格區分大小寫，例如，var、VAR 和 Var 是三個不同的變數。另外，MATLAB 中變數名字必須以字母為首字母，3var、_var 等是非法的變數名。變數由賦值運算子定義 MATLAB 是動態檢查的，這意味著變數可以在未定義其型別的情況下賦值並且變數的型別也可以改變，除非將變數看做是符號物件。變數值可以取自常量，計算中的其他變數的值，或某一函式的輸出。例如： x 17 x 17 x hat x hat x 34 pi2 x 120000 15708 y 3sin x y 16097 30000 向量和矩陣 MATLAB 的意思是 矩陣實驗室，因此它提供了許多建立向量，矩陣和多維陣列的便捷的方式。在 MATLAB 自己的語言中，一個向量（vector）指的是一維（1N 或 N1）矩陣，在其他語言中通常被叫做陣列（array）。矩陣（matrix）通常指的是 2 維陣列，例如 mn 陣列其中 m 和 n 大於或等於 1。多維陣列通常指的是維數大於 2 的陣列。 需要注意的是，雖然 MATLAB 用 C 語言重寫，但是在矩陣儲存方式上卻和 FORTRAN 保持一致，兩者使用的均為列優先儲存，而非行優先儲存。在進行較大的矩陣運算時，這一差別對效能的影響是不應忽略的。 MATLAB 提供了定義簡單陣列的簡單方式，使用語法：初值：增量：終值。例如： array 129 array 1 3 5 7 9 定義了一個名為 array 的變數（或向已存在的變數 array 賦予一個新值），其值為包含 1 3 5 7 9 的一個向量。即陣列由 1 開始（初值），每次以增量 2（增量）遞增，當達到 9（終值）時停止。 array 139 array 1 4 7 在該語法中增量可被省略（這樣僅剩一個冒號），這時增量採用預設值 1。 ari 15 ari 1 2 3 4 5 由於預設增量為 1，上面的語句對變數 ari 用 1 2 3 4 5 的向量賦值。 在 MATLAB 內定義矩陣同樣很簡單，例如： M 123456789 M 1 2 3 4 5 6 7 8 9 在 MATLAB 記憶體取矩陣元素同樣非常簡單，例如： M 123456789 M 1 2 3 4 5 6 7 8 9 M 22 ans 5 M 2 ans 4 5 6 M 1 ans 1 4 7 M 22 10 M 1 2 3 4 10 6 7 8 9 若要對矩陣內所有元素做同樣的運算，如次方倍，則需要在運算元前面加上 ，例如： M 123456789 M 2 ans 1 4 9 16 25 36 49 64 81 若不在運算元前面加上 則代表矩陣運算： M 123456789 M 2 M M 30 36 42 66 81 96 102 126 150 代數 符號運算 利用 MATLAB 的符號數學工具箱（Symbolic Math Toolbox）可以進行代數或符號運算，如分解多項式因子和解代數方程： syms x y Ax33x2y3xy2y3 factor A ans （x y）3 把多項式 A x3 3x2y 3xy2 y3 簡化成了 x y3。 solve（x2 2x 4 0）ans 1 5（12） 5（12） 1 求得方程 x2 2x 4 0 的兩個解為 1 sqrt 5 和 1 sqrt 5。 圖形和圖形使用者介面程式設計 MATLAB 中常用的繪圖命令是 plot，例如描繪一個在 44 區間內的正弦函式： x 40054 y sin x plot xy 利用 plot 命令也可以在同一幅圖中描繪多個函式圖形： x 0012pi y1 sin x y2 sin 2x y3 sin 4x plot x y1 y2 y3 legend ysin x ysin 2xysin 4x 用 MATLAB 的畫圖命令可以生成複雜的三維圖形： t linspace 0 2pi 512 uv meshgrid t a 04 b 5 c 1 n 3 x a1 v2pi 1cos u c cos nv y a1 v2pi 1cos u c sin nv z bv2pi a1 v2pi sin u surf xyzy axis off axis equal colormap hsv 1024 shading interp material shiny lighting phong camlight left infinite view 160 25 版本歷史 到 71 版為止，MATLAB 的釋放編號均以數字來命名，例如 R7，R121，R14 SP1 等；從 72 版開始，釋放編號以年份來命名，每年 3 月份推出的用 a 表示，9 月份推出的則以 b 表示，例如 R2006a 代表 2006 年 3 月推出的版本，R2009b 指 2009 年下半年推出的版本： 版本 發行編號 年份 MATLAB 10 暫時不明 1984 年 MATLAB 2 暫時不明 1986 年 MATLAB 3 暫時不明 1987 年 MATLAB 35 暫時不明 1990 年 MATLAB 4 暫時不明 1992 年 MATLAB 42c R7 1994 年 MATLAB 50 R8 1996 年 MATLAB 51 R9 1997 年 MATLAB 511 R91 1997 年 MATLAB 52 R10 1998 年 MATLAB 521 R101 1998 年 MATLAB 53 R11 1999 年 MATLAB 531 R111 1999 年 MATLAB 60 R12 2000 年 MATLAB 61 R121 2001 年 MATLAB 65 R13 2002 年 MATLAB 651 R13SP1 2003 年 MATLAB 652 R13SP2 2003 年 MATLAB 7 R14 2004 年 MATLAB 701 R14SP1 2004 年 MATLAB 704 R14SP2 2005 年 MATLAB 71 R14SP3 2005 年 MATLAB 72 R2006a 2006 年 MATLAB 73 R2006b 2006 年 MATLAB 74 R2007a 2007 年 MATLAB 75 R2007b 2007 年 MATLAB 76 R2008a 2008 年 MATLAB 77 R2008b 2008 年 MATLAB 78 R2009a 2009 年 MATLAB 79 R2009b 2009 年 MATLAB 710 R2010a 2010 年 MATLAB 711 R2010b 2010 年 MATLAB 712 R2011a 2011 年 MATLAB 713 R2011b 2011 年 MATLAB 714 R2012a 2012 年 MATLAB 80 R2012b 2012 年 MATLAB 81 R2013a 2013 年 MATLAB 82 R2013b 2013 年 MATLAB 83 R2014a 2014 年 MATLAB 84 R2014b 2014 年 MATLAB 85 R2015a 2015 年 MATLAB 86 R2015b 2015 年 MATLAB 90 R2016a 2016 年 MATLAB 91 R2016b 2016 年 MATLAB 92 R2017a 2017 年 MATLAB 93 R2017b 2017 年 MATLAB 94 R2018a 2018 年 MATLAB 95 R2018b 2018 年 MATLAB 96 R2019a 2019 年 MATLAB 97 R2019b 2019 年 MATLAB 98 R2020a 2020 年 MATLAB 99 R2020b 2020 年 MATLAB 910 R2021a 2021 年 MATLAB 911 R2021b 2021 年 MATLAB 912 R2022a 2022 年 MATLAB 913 R2022b 2022 年 MATLAB 914 R2023a 2023 年 從 2014a 版起，Matlab 介面支援中文。 其它科學計算軟體 商業軟體 Maple Maple 是 Waterloo Maple Inc（簡稱 Maplesoft）開發的商業計算機代數系統，用於快速計算、開發設計表單、教學基本概念或建立高保真模擬模型等。最新版本是 2018 年 3 月釋出的 Maple 20180，分 Personal（個人版），Professional（專業版），Academic（學術版），Government（政府版）和 Student（學生版）。 Mathematica Mathematica 是斯蒂芬沃爾夫勒姆開發的科學計算軟體，開發工作現由 Wolfram Research 公司負責。最新版本是 2019 年 4 月 16 日釋出的 Mathematica 120。 LabVIEW LabVIEW 是美國國家儀器公司開發的視覺化程式設計平臺，主要用於資料採集，儀器控制和工業自動化。最新版本是 2021 年 8 月釋出的 LabVIEW 2021。 開源軟體 FreeMat FreeMat 是一個與 MATLAB 和 IDL 很類似的數值計算平臺及程式語言。最新版本是 2009 年 10 月釋出的 FreeMat 40 GNU Octave GNU Octave 是一種主要用於數值計算的高階語言。它除了提供數值方法解決線性和非線性問題的命令介面，還提供了一種與 MATLAB 大抵相容的語言。最新版本是 2024 年 3 月 14 日釋出的 910。 Scilab Scilab 是一個互動性的數值運算平臺，主要用於工程和科學應用方面，例如航空航天、汽車、能源、金融、化學、生物、醫學、國防等。最新版本是 540。 ScicosLab 是由一些曾在 INRIA 和 ENPC 參與 Scilab 開發的研究人員，在 Scilab BUILD4 版本的基礎上開發出來的 GTK 版本，它集成了建模 模擬工具 Scicos 及其它數量眾多的工具箱，被認為是 惟一一款可以與商業軟體 MATLABSimulink 及 MATRIXxSysstemBuild 媲美的開源軟體。最新穩定版本是 441。 JAMA ，一種 Java 語言程式設計工具包。目前最新 103 版本，是 2012 年 11 月 9 日釋出的。 NumPy 與 SciPy NumPy 是 Python 語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算，此外也針對陣列運算提供大量的數學函式函式庫。 SciPy 是一個開源，基於 NumPy 的 Python 演演算法庫和數學工具包，包含的模組有最佳化、線性代數、積分、插值、特殊函式、快速傅立葉變換、訊號處理和影像處理、常微分方程求解和其他科學與工程中常用的計算。 Julia Julia 是一種高階通用語言。 中國大陸受限 2020 年 6 月 12 日，美國對位列實體清單中的哈爾濱工業大學、哈爾濱工程大學等高等院校實施制裁，禁止使用 MATLAB。 註釋 參考文獻 引用 外部連結 MATLAB 官方網站 MATLAB 線上教材 Matlab 技術論壇 線上執行 Matlab 語法 矩陣實驗室（MATLAB）新浪微博 Matlab 教學 參見 Maple Maxima Mathematica GNU Octave Scilab R 語言 Origin Spyder 基於模型的設計 Category 數學軟體 Category 程式設計語言 Category 陣列程式語言 Category 圖表軟體