Python 比 MATLAB 好嗎?
在這篇文章中,我們將探討 Python 和 MATLAB 哪一個更好。儘管 Python 和 Matlab 在很多方面相似,但 Python 擁有許多顯著的優勢。

Python 程式碼通常比 Matlab 程式碼更簡潔易讀。
這有幾個原因,包括:
與 Matlab 使用 `end` 語句作為閉包不同,Python 透過縮排確定程式碼塊的範圍(即表示程式碼塊的結束)。因此,Python 程式設計師被迫縮排程式碼塊,這通常是一個好習慣。與大多數其他程式語言不同,Python 程式設計師永遠不會浪費時間去尋找丟失的 `end` 語句。
幾乎所有程式語言(除了 Matlab)都使用方括號進行索引,使用圓括號進行函式和方法呼叫。Python 也如此。Matlab 兩者都使用圓括號。在 Python 中,方括號對於索引的可讀性至關重要,也簡化了需要使用多種語言的程式設計師的工作。由於使用圓括號進行索引和函式呼叫,Matlab 程式碼可能難以理解,並且經常是問題的根源。
Python,像幾乎所有其他程式語言(除了 Matlab)一樣,使用零索引。
以 x 為一維陣列為例。Python/NumPy 使用 x[0] 作為第一個元素,而不是 x[1]。Matlab 的一索引迫使實現者轉換索引,這很麻煩,也是錯誤的來源,因為文獻中幾乎每種訊號處理技術都使用從零開始的索引求和。
Python 對字典(雜湊表)的支援非常好。
除了索引(鍵)不限於整數外,雜湊表類似於陣列。在編寫編譯器或直譯器時,字典是建立符號表的一種自然而非常有效的方法。在工程和科學程式設計中,字典的重要性及其價值無法強調。但是,Matlab 強加了所有鍵必須是相同型別的無意義要求。Matlab 確實提供字典,有時稱為雜湊對映。
Python 的面向物件程式設計 (OOP) 簡單而高效。
Python 的面向物件程式設計 (OOP) 簡單而優雅,同時又提供了類似 C++ 的功能和靈活性。Matlab 的面向物件程式設計方法複雜且過於冗長。以下是 Matlab 官方文件中的一個例子:
當一個子類從多個類派生時,宣告的超類指定的所有屬性、方法和事件都將傳遞給子類。如果多個超類在相同名稱下定義了相同的屬性、方法或事件,則必須明確解決所有定義。如果兩個或多個超類在相同名稱下聲明瞭相同的屬性,則必須滿足以下要求之一:
對於所有屬性或除一個屬性外的所有屬性,`SetAccess` 和 `GetAccess` 屬性都必須設定為私有。
這些屬性在所有超類中具有相同的定義(例如,當所有超類都從公共基類繼承該屬性時)。
你理解了嗎?由於 Matlab 類必須在單獨的類定義檔案中指定,因此也很難在不更改 Matlab 路徑的情況下保留同一類的不同迭代。
Python 是免費和開放的。
Python 是開源的,因此始終可以檢視內部以瞭解事情是如何完成的。另一方面,Matlab 主要是非開源和專有的,在某些情況下,甚至演算法也是專有的(Simulink,Matlab 的模擬工具箱,包含一個專有的排程演算法)。
每個 Matlab 工具箱都必須單獨購買,而 Matlab 許可證相當昂貴。另一方面,Python 是開源且免費的。建立包含良好選擇的庫的 Python 版本可能具有挑戰性,但有高質量的發行版包含 NumPy、SciPy、IPython(互動式 shell)、matplotlib 和許多其他重要庫。兩個非常有用的免費版本如下:
Enthought Canopy 發行版
Continuum Analytics 的 Anaconda Python 發行版
從另一個意義上說,Python 社群是開放的。幾乎每個 Python 方面都有一個活躍的、建設性的公開討論,任何想要參與的人都可貢獻他們的想法。
任何數量的函式都可以捆綁在一個檔案中(模組)
根據 MathWorks 的說法,MATLAB 程式檔案可以包含各種任務的程式碼。主函式(檔案中的第一個函式)可從命令列訪問,並且對其他檔案中的函式可見。區域性函式是由檔案執行的額外操作。只有同一檔案中的其他函式才能看到區域性函式。
從事複雜基於 Matlab 的專案的開發者通常會被大量的小檔案淹沒,因為區域性函式只能在其編寫的檔案中訪問。
Python 的匯入語句
Matlab 中沒有 Python 中使用的匯入語句。(Matlab 搜尋 Matlab 路徑(一個目錄列表)以解析對既不是內建函式也不是在同一檔案中提供的函式的引用。)當 Matlab 原始碼檔案的名稱和檔案的主(起始)函式名稱不同時,檔名優先於程式碼中出現的函式名。由於這兩個設計缺陷,不可能建立單個函式的多個迭代,而不為它們提供唯一的名稱或經常更改 Matlab 路徑。當將大型 Matlab 程式分解成多個檔案時,這些檔案的位置至關重要,並且必須與 Matlab 路徑一致。
共享庫升級後,有三種可能性:
讓所有開發人員“步調一致”升級到最新版本。
必須修改新(或舊)版本使用者的 Matlab 路徑。(如果同一個人在不同的應用程式中同時使用舊庫和新庫,這就會出現問題。)
一個版本的使用者根據另一個版本提供的不同名稱修改他們的程式碼。
Python 允許你將類和函式組織成模組和包,任何名稱衝突都透過模組或包的名稱來解決。Python 的匯入語句使程式設計師可以完全控制使用哪些元件。
Python 提供更多圖形包和工具的選擇
Matplotlib 生成的高質量非互動式二維和三維圖形對於大多數工程和科學圖形來說已經足夠了。與 Matlab 相比,Python 和 matplotlib 需要更少的調整即可生成可供釋出的輸出。
可以使用 Qt、Traits 和 Wx 建立圖形使用者介面。(Wx 正在逐漸被淘汰。)
Chaco 有一個用於建立互動式圖形的 API。
結論
在本文中,我們深入瞭解了為什麼 Python 比 Matlab 更好的資訊。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP