- MATLAB程序設計及應用
- 郭斯羽等編著
- 2202字
- 2022-05-06 19:27:43
1.2.1 優點
MATLAB作為一種科學計算軟件,具有如下優點。
1. 強大的數學計算能力特別是矩陣運算能力
與C/C++、Java等編程語言不同,MATLAB是將數組和矩陣作為基本的操作單元來對待的。因此,在C/C++等編程語言中,加法運算符“+”在最基礎的層面上支持的僅僅是單個標量的加法運算。盡管C++等面向對象的編程語言可以通過操作符重載來定義更為復雜的“+”運算,但是這需要編程者額外的編程工作,或者是其他庫的支持。而MATLAB編程語言直接將數組和矩陣這樣的批量數據的組織形式作為基本的處理單元,因此,在MATLAB中,“+”表示的就是整個數組和矩陣之間的加法,這是MATLAB內生的特性,不需要編程者額外進行任何工作,從而極大地簡化了數組和矩陣運算的編程任務,也使得其表達形式與數學公式更為一致,同時也更為簡明清晰。
不僅如此,MATLAB數組和矩陣的元素還可以取復數值而不限于實數值,從而使復數相關的運算也變得十分易用。
此外,MATLAB從最初版開始就關注矩陣運算,因此其矩陣運算包括特征根與特征矢量的求取、矩陣求逆等常用而核心的運算,都具有極高的運行效率。實際上,MATLAB在矩陣相關運算方面,一直都是各主要編程語言中最為高效者之一。
2. 語言特性簡潔,編程效率高
MATLAB編程語言本身的特性簡潔明了,沒有引入太多復雜的特性,這一點與C++這樣面向對象的編程語言相比顯得尤為突出。此外,MATLAB中的數組和矩陣實際上都是“動態”的,因此,在內存管理方面編程者幾乎不需要負擔多少工作。盡管在空間和時間效率上不一定能保證是最優的,但是不用進行內存管理,將明顯減少程序發生內存相關錯誤的可能,從而使得編程者的代碼編寫和調試工作變得更為簡單和輕松,編程效率可以顯著提高,編程者能夠將更多精力集中在如何解決實際問題,而不是陷在編程語言本身的技術細節之中。
同時,MATLAB將數組和矩陣作為基本操作單元的處理方式,也使得與批量數據的運算和處理有關的程序變得更為簡潔,編程工作量更少。在掌握了MATLAB的矢量化運算技巧之后,在C語言或Java語言中需要一層甚至是多層嵌套的循環才能完成的運算,在MATLAB中也許僅需要寥寥數行就能實現。
3. 交互性好,使用方便
MATLAB又被稱為“草稿紙式的計算軟件”,它的基本使用方式是命令行式的:在命令窗口中輸入一條命令,馬上就能執行該命令,并且根據用戶的需要可以顯示計算的結果。這條命令可以本身是執行一項復雜、完整的計算任務的函數調用,也可以僅僅是一個復雜處理過程中的中間步驟。而利用C/C++或Java等編程語言編程時,在編寫了完整或部分的代碼后,需要經過編譯、鏈接等操作產生可執行程序,然后才能夠實際運行和看到結果。
而且MATLAB的不同程序間的互相調用也十分方便和簡單。它提供的每個M文件既是一個函數模塊,也是一個完整的可執行程序。因此,它們既可以單獨用來執行一項特定的任務,也可以組合起來構成更為復雜的程序。以MATLAB工具箱為例,每個工具箱通常由存放在特定目錄下的一系列M函數構成,這個目錄實際上起到了在其他編程語言中函數庫的作用。
4. 繪圖能力強大,能夠利用數據可視化有效輔助研究分析
利用MATLAB可以方便地繪制多種常用的二維圖形和三維圖形,如曲線圖、散點圖、餅圖、柱狀圖、三維曲線/三維曲面圖、偽彩色圖等。這些圖形不但提供大量數據的直觀表示,而且更便于揭示數據間的內在關系。
5. 為數眾多的工具箱
MATLAB除了基本的數學計算功能,還以工具箱的形式提供了大量針對特定功能和特定應用領域的工具箱。例如,在MATLAB R2020a中,就提供了包括曲線擬合工具箱、最優化工具箱、符號數學工具箱、統計與機器學習工具箱、深度學習工具箱、強化學習工具箱、并行計算工具箱,以及針對信號處理、圖像處理與機器視覺、控制系統、測試測量、射頻與混合信號、無線通信、自主系統、FPGA等硬件開發、汽車、航空航天、計算金融學和計算生物學等特定應用領域的工具箱,多達60余個。此外,還包括用于仿真和代碼生成等功能的軟件和函數或模塊庫,數量也多達數十個。這些工具箱直接為使用者提供了相關領域的大量較為成熟的算法,從而使得研究者與開發者能夠迅速在這些已有成果的基礎上,構建自己的解決方案或新的算法。
6. 開放性好,便于擴展
大量MATLAB工具箱函數都是以M文件的形式提供的,因此,其具體實現都是公開的,而且用戶可根據自己的需要加以修改。這些公開的代碼不僅為用戶對其進一步改進提供了很好的基礎,而且研究者還能夠通過閱讀這些代碼,更好地理解相關的算法。
以M文件為基本模塊的工具箱組織方式,也使得用戶能夠構建自己的工具箱,或進一步搭建起基于MATLAB的二次應用環境。
MATLAB的開放性還體現在它與其他編程語言和工具軟件的交互上。MATLAB提供了C語言和FORTRAN語言的API函數庫,開發者可以利用這些API函數,使用C語言或FORTRAN語言來實現有關算法,然后把它們編譯為可在MATLAB中執行的MEX函數模塊。
MATLAB還通過COM接口對外提供計算服務,其他的應用程序可以通過該COM接口調用MATLAB的計算功能,從而使得MATLAB可以作為一個強大的后臺計算引擎來發揮作用。例如,用戶可以利用C++、VB等語言來編寫應用程序,然后在其中調用MATLAB來完成復雜或性能敏感的計算任務。
MATLAB也可以對Java類進行操作和使用。同時,由于MATLAB強大的功能和已經構建起來的應用生態,不少其他的工具軟件也提供了與MATLAB兼容的接口。例如,在LabVIEW中就可以利用M語言來編寫模塊以執行有關的計算功能。
7. C/C++代碼生成功能
MATLAB能自動將M代碼轉換為可靠的C/C++語言代碼。通過這一功能,開發者就可以利用MATLAB高效便捷地進行算法的實現、調試與驗證,之后再自動轉換為C/C++代碼,就能夠將所實現的算法用于需要的程序中,從而極大地減少編寫和調試程序的工作量。
- 軟件測試項目實戰之性能測試篇
- Data Analysis with IBM SPSS Statistics
- Python應用輕松入門
- Unity Shader入門精要
- 51單片機C語言開發教程
- Create React App 2 Quick Start Guide
- Java網絡編程實戰
- Unity 2018 Shaders and Effects Cookbook
- Statistical Application Development with R and Python(Second Edition)
- Node.js 12實戰
- Java Web從入門到精通(第3版)
- Go語言入門經典
- Web編程基礎:HTML5、CSS3、JavaScript(第2版)
- Java高手是怎樣煉成的:原理、方法與實踐
- Web前端測試與集成:Jasmine/Selenium/Protractor/Jenkins的最佳實踐