MATLAB

MATLAB編寫的程式。MATLAB主要用於數值運算，但利用為數眾多的附加工具箱，它也適合不同領域的應用，例如控制系統設計與分析、影像處理、深度學習、訊號處理與通訊、金融建模和分析等。另外還有配套軟體包Simulink提供視覺化開發環境，常用於系統模擬、動態/嵌入式系統開發等方面。在R2017b後的MATLAB版本更釋出了深度學習的工具，使其能夠視覺化的快速建立AI模型，並透過各種轉碼器，部屬於嵌入式硬體之中。截至2020年，MATLAB在全球擁有超過400萬使用者。MATLAB使用者來自工程、科學和經濟學領域。歷史.1970年代末到80年代初，時任美國新墨西哥大學教授的克里夫·莫勒爾為了讓學生更方便地使用LINPACK及，獨立編寫了第一個版本的MATLAB。這個版本的MATLAB只能進行簡單的矩陣運算，例如矩陣轉置、計算行列式和本徵值，此版本軟體分發出大約兩三百份。1984年，傑克·李特、克里夫·莫勒爾和合作成立了MathWorks公司，正式把MATLAB推向市場。MATLAB最初是由莫勒爾用FORTRAN編寫的，李特和班格爾特花了約一年半的時間用C重新編寫了MATLAB並增加了一些新功能，同時，李特還開發了第一個系統控制工具箱，其中一些程式碼到現在仍然在使用。C語言版的面向MS-DOS系統的MATLAB 1.0在拉斯維加斯舉行的IEEE決策與控制會議正式推出，它的第一份訂單隻售出了10份複製，而到了現在，根據MathWorks自己的資料，目前世界上180多個國家的超過三百萬工程師和科學家在使用MATLAB和Simulink。1992年，學生版MATLAB推出；1993年，Microsoft Windows版MATLAB面世；1995年，推出Linux版。主要功能.MATLAB的主要提供以下功能：工具箱.MATLAB的一個重要特點是可擴充套件性。作為Simulink和其它所有MathWorks產品的基礎，MATLAB可以透過附加的工具箱進行功能擴充套件，每一個工具箱就是實現特定功能的函式的集合。MathWorks提供的工具箱分以下幾大類：這些工具箱大多是用開放式的MATLAB語言寫成，使用者不但可以檢視原始碼，還可以可根據自己的需要進行修改以及建立自定義函式。此外，常有使用者在MATLAB Central: File Exchange 釋出自己編寫的MATLAB程式或工具箱，供他人自由下載使用。MATLAB語言.MATLAB語言是一種互動性的數學指令碼語言，其語法與C/C++類似。它支援包括邏輯。執行MATLAB程式碼的最簡單方式是在MATLAB程式的命令視窗。此時, MATLAB可以看作是一個互動式的數學終端，簡單來說，一個功能強大的“計算器”。MATLAB程式碼同樣可以儲存在一個以".m"為字尾名的文字檔案中，然後在命令視窗或其它函式中直接呼叫。變數與賦值.MATLAB的變數名字跟許多程式語言一樣，嚴格區分大小寫，例如，"var"、"VAR"和"Var"是三個不同的變數。另外，MATLAB中變數名字必須以字母為首字母，"3var"、"_var"等是非法的變數名。變數由賦值運算子定義. MATLAB是動態檢查的，這意味著變數可以在未定義其型別的情況下賦值並且變數的型別也可以改變，除非將變數看做是符號物件。變數值可以取自常量，計算中的其他變數的值，或某一函式的輸出。例如：» x = 17x =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自己的語言中，一個"向量"通常指的是2-維陣列，例如"m"×"n"陣列其中"m"和"n"大於或等於1。多維陣列通常指的是維數大於2的陣列。需要注意的是，雖然MATLAB用C語言重寫，但是在矩陣儲存方式上卻和FORTRAN保持一致，兩者使用的均為列優先儲存，而非行優先儲存。在進行較大的矩陣運算時，這一差別對效能的影響是不應忽略的。MATLAB提供了定義簡單陣列的簡單方式，使用語法："初值"codice_3"增量"codice_3"終值"。例如：» array = 1:2:9array =1 3 5 7 9定義了一個名為codice_5的變數時停止。» array = 1:3:9array =1 4 7在該語法中"增量"可被省略，這時增量採用預設值1。» ari = 1:5ari =1 2 3 4 5由於預設增量為1，上面的語句對變數codice_7用1, 2, 3, 4, 5的向量賦值。在MATLAB內定義矩陣同樣很簡單，例如：» M = [1,2,3;4,5,6;7,8,9]M =1 2 34 5 67 8 9在MATLAB記憶體取矩陣元素同樣非常簡單，例如：» M = [1,2,3;4,5,6;7,8,9]M =1 2 34 5 67 8 9» M(2,2) ans =5» M(2,:) ans =4 5 6» M(:,1) ans =147» M(2,2) = 10M =1 2 34 10 67 8 9若要對矩陣內所有元素做同樣的運算，如次方倍，則需要在運算元前面加上"."，例如：» M = [1,2,3;4,5,6;7,8,9]» M .^2ans =1 4 916 25 3649 64 81若不在運算元前面加上"."則代表矩陣運算：» M = [1,2,3;4,5,6;7,8,9]M ^2 = M * M =30 36 4266 81 96102 126 150代數/符號運算.利用MATLAB的符號數學工具箱可以進行代數或符號運算，如分解多項式因子和解代數方程：» syms x y» A=x^3-3*x^2*y+3*x*y^2-y^3;» factor (A)ans =^3把多項式formula_1簡化成了formula_2。» solveans =1 - 5^5^ + 1求得方程formula_3的兩個解為formula_4和formula_5。圖形和圖形使用者介面程式設計.MATLAB中常用的繪圖命令是"plot"，例如描繪一個在[-4,4]區間內的正弦函式：利用"plot"命令也可以在同一幅圖中描繪多個函式圖形：用MATLAB的畫圖命令可以生成複雜的三維圖形：版本歷史.到7.1版為止，MATLAB的釋放編號均以數字來命名，例如R7，R12.1，R14 SP1等；從7.2版開始，釋放編號以年份來命名，每年3月份推出的用a表示，9月份推出的則以b表示，例如R2006a代表2006年3月推出的版本，R2009b指2009年下半年推出的版本：從2014a版起，Matlab介面支援中文。其它科學計算軟體.商業軟體.Maple.Maple是Waterloo Maple Inc.。Mathematica.Mathematica是斯蒂芬·沃爾夫勒姆開發的科學計算軟體，開發工作現由Wolfram Research公司負責。最新版本是2019年4月16日釋出的Mathematica 12.0。LabVIEW.LabVIEW是美國國家儀器公司開發的視覺化程式設計平臺，主要用於資料採集，儀器控制和工業自動化。最新版本是2021年8月釋出的LabVIEW 2021。開源軟體.FreeMat.FreeMat是一個與MATLAB和IDL很類似的數值計算平臺及程式語言。最新版本是2009年10月釋出的FreeMat 4.0GNU Octave.GNU Octave是一種主要用於數值計算的高階語言。它除了提供數值方法解決線性和非線性問題的命令介面，還提供了一種與MATLAB大抵相容的語言。最新版本是2019年3月1日釋出的5.1.0。Scilab.Scilab是一個互動性的數值運算平臺，主要用於工程和科學應用方面，例如航空航天、汽車、能源、金融、化學、生物、醫學、國防等。最新版本是5.4.0。ScicosLab.是由一些曾在INRIA和ENPC參與Scilab開發的研究人員，在Scilab BUILD4版本的基礎上開發出來的GTK+版本，它集成了建模/模擬工具Scicos及其它數量眾多的工具箱，被認為是“惟一一款可以與商業軟體MATLAB/Simulink及MATRIXx/SysstemBuild媲美的開源軟體”。最新穩定版本是4.4.1。JAMA.()，一種Java語言程式設計工具包。目前最新1.0.3版本，是2012年11月9日釋出的。NumPy與SciPy.NumPy是Python語言的一個擴充程式庫。支援高階大量的維度陣列與矩陣運算，此外也針對陣列運算提供大量的數學函式函式庫。SciPy是一個開源，基於NumPy的Python演演算法庫和數學工具包，包含的模組有最佳化、線性代數、積分、插值、特殊函式、快速傅立葉變換、訊號處理和影象處理、常微分方程求解和其他科學與工程中常用的計算。Julia.Julia是一種高階通用語言。中國大陸受限.2020年6月12日，美國對位列實體清單中的哈爾濱工業大學、哈爾濱工程大學等高等院校實施制裁，禁止使用MATLAB。