MATLAB是美國MathWorks公司開發的一款商業數學軟件。是較多工程師和數學家都在使用的編程和數值計算平臺。
MATLAB入門容易、操作簡單,功能涉及眾多領域。可以通過實時編輯器與他人共享腳本,方便協作;可以對數據進行探查、建模、繪圖及可視化;能夠支持簡單交互式命令的運行和大型應用程序的開發;還能用于專業App的創建。
在某些特定的情況下,可能需要在其他的編程軟件中喚醒MATLAB配合工作,這時可以輕松便捷地借助 MATLAB 引擎 API,不發起 MATLAB 桌面會話就可以實現即時使用。從MATLAB2010a版開始,C/C++、Fortran、Java、Python等編程語言中均可執行上述操作。
MATLAB除了在各種商業場景中發揮作用外,還應用于航空航天、醫學醫療,以及高校專業科目教學中,幫助高質量完成專業教學任務。
歷史溯源
技術緣起
初版MATLAB 的數學基礎源自 J. H. Wilkinson 及 18 個同事于1965到1970年間發表的一系列研究論文。這些論文主要闡述了解決矩陣線性方程和特征值問題的算法。
1970年阿貢國家實驗室的一組研究人員在美國國家科學基金會(NSF)的支持下,開發出叫做EISPACK的矩陣特征系統軟件包,1975年克里夫·莫勒爾和其他幾位學者在深入研究后,一起研發出名為LINPACK的線性方程軟件包。由于借助FORTRAN調用這兩個程序庫太過于復雜和繁瑣,這兩個項目是失敗的。
1975年,克里夫·莫勒爾(Cleve Moler)提交了一項“調研數學軟件的開發方法”研究項目,目的是“調研滿足研發、測試和推廣高質量數學軟件所需要的方法、成本和資源”。
版本初現
20世紀80年代初,創始人克里夫·莫勒爾(Cleve Moler)作為大學教授,希望學生可以方便地使用LINPACK和EISPACK,在學習了如何解析編程語言后,克里夫·莫勒爾用Fortran編寫了初版的MATLAB。該名稱是矩陣實驗室(Matrix Laboratory)的縮寫,其只是一個簡單的交互式矩陣計算器,數據類型只有矩陣。并且保存于庫中的文字和函數只有71個,若用戶想添加庫外的函數,須在獲得源代碼的前提下編寫Fortran子程序,在解析表里添加自己的函數名稱,然后重新編譯MATLAB。
商業化發展
初版MATLAB出現后,受到許多涉及數學矩陣運算專業的老師和學生追捧。1983年,在斯坦福攻讀研究生工程學位的Jack Little提議開發基于MATLAB的商用產品。而后,Little、Moler、Steve Bangert合作于1984年成立了邁斯沃克公司。由于當時的IBM臺式機還不能夠完全承載MATLAB的運行,Little在購買的Compaq電腦克隆機上不斷修改和更新MATLAB運行程序。終于,1984年可以在電腦上運行的PC-MATLAB首次發布;次年Pro-MATLAB正式問世,這一新版本主要針對20世紀70年代初出現的操作系統Unix工作站。
現代版本更新
1990年開始,各種新技術添加應用于MATLAB中,更多表示數據的方法被引入。如1992年在MATLAB 4中引入了稀疏矩陣,用于表示表示非常大的,有很少非零值的數組;1990年在MATLAB中嵌入了SIMULINK工具,開啟可視化仿真階段;1996年MATLAB 5中引入的元胞數組,它是MATLAB對象的索引;2004年由MATLAB 7完成了對單精度算術的支持;2008年面對對象的編程進行了重大改進。
在不斷的更新和優化過程中,有兩個非常重要的功能上線。一個是于2000年推出的MATLAB桌面版,該版中的任一面板都可以關閉或在取消停靠后在獨立窗口中打開,十分便捷。另一個是2016年推出的實時編輯器,能夠在單一的交互式環境中編寫、運行和修改代碼。
重要版本發布
自2012年以來,MATLAB不斷推出重要版本及重大更新,優化功能服務,拓展涉及領域。
軟件功能
數據預處理
MATLAB可以對數據進行預處理,如數據清洗、數據轉換等。數據清洗器(Data Cleaner)可以識別面向列的混亂數據,一次可完成對于多個數據的清理,同時還可以完善清理過程。利用實時編輯器也可以完成諸多數據預處理任務,如調用ismissing函數可以清洗缺失數據,調用rmmissing函數能夠刪除缺失的條目,使用ischange函數可以查找數據的突變點,通過smoothdata函數可以平滑處理含噪數據,normalize函數能實現對數據的歸一化處理等。除此之外,MATLAB還能完成清理離群數據、按組計算、去除數據中多項式趨勢等預處理任務。
數值計算
MATLAB的技術緣起于數學,可以完成初等數學中的算術運算、三角學相關運算、指數和對數運算、復數運算、離散數學運算等相對較為簡單的運算。還能夠完成各種矩陣分解、一次方程求解、計算特征值或奇異值等,例如,運用mldivide或mrdivide函數可以求解線性方程組,通過transpose函數能夠完成向量或矩陣的轉置,eig函數可以求出特征值及特征向量,svd函數可以對奇異值進行分解等。
同時,由于MATLAB主要以矩陣運算作為數據的基本操作形式,能夠快速、簡潔且高效完成矩陣運算,所以廣泛運用于各類數值分析任務中。借助MATLAB可以完成數值積分、微分方程相關運算,線性方程組相關運算,還可以求解常微分方程(ODE)和偏微分方程(PDE)。另外,調用MATLAB中的傅里葉分析和濾波相關函數還可以對離散數據進行處理和分析,fftn函數、convn函數可分別實現N維快速傅里葉變換及卷積,filter2函數可以實現二維數字濾波。
數值統計分析
MATLAB可以對數值進行各種統計分析操作,包括描述性統計分析、假設檢驗、方差分析等。使用其自帶的Statistics and Machine Learning Toolbox可以通過統計信息和機器學習來分析數據并為數據建模。不僅可以完成數據的導入導出及可視化,還能根據樣本數據計算有關集中趨勢、散度、形狀、相關性和協方差等描述性統計量。在對樣本數據進行概率分布擬合后,可以判斷數值分布類型,并生成分布樣本。運用ANOVA系列函數還能夠實現數值方差與協方差的分析與多重比較等任務。除此之外,這一Toolbox還能夠對數值的回歸模型進行學習及模擬,通過回歸學習器以交互方式訓練、驗證和調整回歸模型。
繪圖及數據可視化
MATLAB具有較強的繪圖能力,其自帶的圖形函數可以進行二維及三維靜態圖形的繪制。另外,還可以借助animate、movie等生成動畫或視頻的函數實現動態圖形繪制。另外,使用hold on函數還可進行多線條的同步繪制,將多條圖線共同展示于一塊MATLAB面板上。
MATLAB可以通過調用不同函數繪制不同圖像。主要繪圖類型包括:線圖、散點圖和氣泡圖、數據分布圖、離散數據圖、地理圖、極坐標圖、等高線圖、向量場、曲面圖和網格圖和讀取圖像,除此之外,還能夠進行三維可視化和動畫呈現。例如,plot函數可以進行二維曲線的繪制,面積函數可以填充區二維繪圖,fplot3函數可以繪制三維參數化曲線,scatter函數可以繪制散點圖,histogram2函數可完成二元直方圖的繪制,bar函數可以進行條形圖的繪制等。
在使用MATLAB進行繪圖時,還會使用以下函數對圖像進行輔助信息的調整及呈現:title?函數向圖中添加標題;?xlabel?和?ylabel?函數向圖中添加軸標簽;legend?函數向圖中添加標識每個數據集的圖例;還可以通過設置FontSize屬性來控制標題、標簽和圖例的字體大小。
數字圖像處理
MATLAB以其庫內豐富的函數更加深入應用于數字圖像處理領域,可以實現對圖像格式轉換、圖像色彩變更、圖像增強、圖像去噪等操作。
在數字圖像處理方面,可利用MATLAB中的imread、imshow等函數讀取并顯示圖像;imwrite函數可以實現圖像文件的保存;rgb2hsv函數、rgb2ycbcr函數可以實現數字圖像的格式轉換;gb2gray函數可以實現彩色圖像灰度化;im2bw可以實現彩色圖像的黑白化。
在圖像增強方面,MATLAB可對灰度圖像和彩色圖像實現增強。可以通過調用庫中的imadjust函數將輸入強度圖像的值映射到新值,提高圖像對比度;histeq函數可以對圖像執行直方圖均衡化,以實現對比度增強;adapthisteq函數可實現自適應直方圖均衡化,可以對每個圖塊對比度的增強,同時限制整體對比度增強,以避免放大圖像中可能存在的噪聲。
在數字圖像去噪方面,通過MATLAB可實現對圖像中常見噪聲的去除。如,運行MATLAB自帶的平均值濾波器Kaverage=fspecial('average',hsize) %,中位數濾波器Kmedian=medfilt2(x0,[n,n]),Wiener濾波器(一種自適應濾波器)K=wiener2(J,[n,n])可以對圖像進行線性濾波。MATLAB較強的圖像處理能力使其不斷加持于在醫療影像、衛星定位系統等科技領域。
程序設計及仿真建模
MATLAB中有數學、科學和工程計算相關的上萬個相關內置函數,在程序設計時,可以使用包括數值、字符串、日期時間、分類、結構體和表在內的專用數據類型表示數據,還可以使用專門為每種數據類型設計的函數來執行常見任務。此外,MATLAB還能夠進行編寫可重用函數、創建自定義類等操作,并且加入了實時編輯器等專屬功能,這使得借助 MATLAB的編程及程序設計,相比于傳統的 C、C++ 或 Fortran 等語言更快速高效和靈活。
同時,MATLAB中嵌入的SIMULINK工具箱能夠用于構建仿真模型,它為用戶提供了圖形編輯器、可自定義的模塊庫以及求解器,能夠進行動態系統建模和仿真。Simulink常被應用于汽車、航空、工業自動化、信號處理、控制設計、物理建模、離散事件仿真等領域。
特色功能
生成報告和演示文稿
MATLAB可以用于演示文稿(PPT)的生成及修改。如使用newName函數可以打開演示文稿;find及replace函數可以對演示文稿中的內容進行修改和替換。另外,還可以使用MATLAB的PPT生成工具箱,將MATLAB生成的圖形和文本直接插入到PPT中,也可以使用MATLAB的LaTeX支持,生成高質量的科技報告和論文。
快速構建MATLAB應用程序
MATLAB中提供的App Designer是快速構建MATLAB應用程序的工具,可以幫助用戶進行專業App的創建。MATLAB為用戶提供了大量的App 組件和自定義交互,幫助復現儀表面板的外觀和操作。由于并不要求軟件開發專業背景,用戶只需拖放可視化組件即可實現圖形用戶界面 (GUI) 設計布局,或通過使用集成的編輯器快速為其行為編程,就可以完成App基本創建。
同時,MATLAB中創建的App還可以實現共享,不論對方是否擁有MATLAB,都可以從 App 庫單擊即訪問。另外用戶在打包時可以直接打包為交互式 Web App ,并使用 MATLAB Web App Server 進行共享。最終用戶可直接基于瀏覽器運行 Web App,而無需額外安裝任何軟件,并且只要獲得用戶的允許,還能夠實現多人協作模式。
系統要求
截止2023年8月,MATLAB最新版本為MATLAB R2023a。以該版本為例,Windows及Mac OS系統要求如下:
Windows系統要求
macOS系統要求
常用函數
向量、矩陣相關函數
符號、方程相關函數
繪圖及可視化相關函數
MATLAB Online
使用MATLAB Online版本,用戶可以通過 Web 瀏覽器使用 MATLAB。無需下載,不必安裝,只要接入互聯網并登錄,就能夠直接使用 MATLAB 和 Simulink;還可以通過在線共享和發布,與他人協作;在任何位置存儲、管理和訪問文件。這一版本受到高校師生及科研工作者的青睞,基本版 MATLAB Online 每月提供 20 小時的免費使用時間,用戶可以訪問 10 個常用工具箱。
爭議事件
美國BIS曾將中國多所高校拉進MATLAB使用“黑名單”,宣布禁止師生使用
2020年5月開始,網友發現哈爾濱工業大學、哈爾濱工程大學等學校的學生陸續收到了MATLAB正版軟件取消激活的通知,在與其開發公司邁斯沃克交涉之后,才得知因為美國商務部工業與安全局以國家安全或外交政策利益為由,將33 家中國科技公司和機構、高校等拉進實體名單,因此相關授權已被中止。
參考資料 >
MATLAB總覽.MathWorks官網.2023-08-16
MATLAB發展簡史.MathWorks官網.2023-08-16
MATLAB 實時編輯器.MathWorks官網.2023-08-16
數據分析.MathWorks官網.2023-08-16
MATLAB 編程.MathWorks官網.2023-08-16
MATLAB App 設計工具.MathWorks官網.2023-08-18
將 MATLAB 與其他編程語言結合使用.MathWorks官網.2023-08-16
Matlab軟件在大學物理課程教學中的輔助應用.中國知網.2023-08-16
MATLAB軟件輔助高等數學教學的探討.中國知網.2023-08-16
【芯歷史】“神器”也是“毒蘋果”,MATLAB是如何長成的?.搜狐.2023-09-04
MathWorks發布包含MATLAB和Simulink系列的2016a版本.中國知網.2023-08-16
MathWorks發布Matlab和Simulink重大更新的版本.中國知網.2023-08-16
MathWorks推出MATLAB重要新版本.中國知網.2023-08-16
MATLAB和Simulink新版本Release 2018a發布眾多更新.中國知網.2023-08-16
MathWorks 2018b版本的MATLAB和Simulink中擴展深度學習功能.中國知網.2023-08-16
matlab2019b 深度學習_Matlab R2019b新增功能介紹.CSDN博客.2023-08-16
MathWorks發布MATLAB和Simulink R2020a版本.中國知網.2023-08-16
MathWorks發布MATLAB和Simulink版本2021a.中國知網.2023-08-16
MathWorks發布MATLAB和Simulink版本2021b.中國知網.2023-08-16
MathWorks發布MATLAB和Simulink版本2022a.中國知網.2023-08-16
Matlab 2022b如期而至,新增兩款新產品.搜狐網.2023-08-16
數據的預處理.MathWorks官網.2023-08-23
初等數學.MathWorks官網.2023-08-23
線性代數.MathWorks官網.2023-08-23
數值積分和微分方程.MathWorks官網.2023-08-23
傅里葉分析和濾波.MathWorks官網.2023-08-23
Statistics and Machine Learning Toolbox.MathWorks官網.2023-08-24
描述性統計量和可視化.MathWorks官網.2023-08-24
概率分布.MathWorks官網.2023-08-24
ANOVA.MathWorks官網.2023-08-24
回歸.MathWorks官網.2023-08-24
圖形.MathWorks官網.2023-08-23
MATLAB 繪圖類型.MathWorks官網.2023-08-23
創建二維線圖.MathWorks官網.2023-08-23
為圖添加標題和軸標簽.MathWorks官網.2023-08-23
格式和注釋.MathWorks官網.2023-08-23
Image Processing Toolbox-執行圖像處理、可視化和分析.MathWorks官網.2023-08-24
圖像-讀取、寫入、顯示和修改圖像.MathWorks官網.2023-08-23
對比度增強方法.MathWorks官網.2023-08-23
去除噪聲.MathWorks官網.2023-08-23
幫助中心-醫學影像工作箱.MathWorks官網.2023-09-04
Lidar Toolbox-激光雷達工具箱.MathWorks官網.2023-09-04
Simulink 與系統設計和仿真.MathWorks官網.2023-08-23
應用領域.MathWorks官網.2023-08-18
創建PPT對象.MathWorks官網.2023-08-23
使用 MATLAB 和 Simulink 生成報告.MathWorks官網.2023-08-23
MATLAB R2023a Windows系統要求.MathWorks官網.2023-08-23
語言基礎知識.MathWorks官網.2023-08-24
運算符和基本運算.MathWorks官網.2023-08-24
符號數學工具箱.MathWorks官網.2023-08-24
線圖.MathWorks官網.2023-08-24
格式和注釋.MathWorks官網.2023-08-24
MATLAB Online.MathWorks官網.2023-08-18
MATLAB Online 的不同版本.MathWorks官網.2023-08-18
多高校被禁用Matlab.澎湃新聞.2023-08-18
哈工大也太難了!曝在全國大學生數學建模競賽中被禁用“理工神器”MATLAB.搜狐網.2023-08-23