python語言與MATLAB語言的區別

2021-07-30 15:48:36 字數 1820 閱讀 6984

現在學術界越來越多人使用python 語言取代matlab 作為研究的主要程式編寫工具。python語言看似有點類似matlab語言,對於習慣matlab 的使用者來說,轉換到python語言應該並不困難,但是有些關鍵要注意的地方,也就是這兩種語言的差別。掌握了兩種語言的差別,我想從matlab過度到python也就不困難了。這裡不考慮class(類)的情況下,討論下兩種語言基本語法上的一些差異。

1、第乙個差異點在於python 的index 起始值是從0 開始,而matlab是從1開始,python 還有負號的index。多了負號的index 讓python 在撰寫程式上又多了一些彈性。因為起始值從零開始,所以python 的index 是落在資料與資料之間,而不是落在資料之上。例如,a = range(5), 得到a = [0,1,2,3,4]。這時,a[1:2]的答案是[1] 而不是[1,2],這點和matlab 的習慣非常不同。 

2、再來是python雖然和matlab 一樣是乙個高階的直譯式語言,但是python 不是專為矩陣計算設計的軟體,例如matlab中 有x=[1,2,3],y=[2,4,6],z=x+y,z=[3,6,9],而如果在python中這樣寫z=[1,2,3,2,4,6],為了配合python 更廣泛的應用特性,要利用python 處理數值或是矩陣計算時,最方便的方法是使用numpy 庫。通過其的array類來處理。

3、在運運算元方面"^" 在matlab 中是次方的意思,可是在python 中的次方是**。例如2 的3 次方在python 中的打法為2**3。"^"在python 中並沒有完全被捨棄,而是作為位元運算的xor ,例如2^3=1,因為2 的二進位表示為0010,3 的二進位表示為0011,因此0010 與0011 的xor 是0001 其值為1。在python 中這類不需要經過二進位轉換就可以直接做二進位計算的位元運算元還有& (and)以及 | (or)。

4、在matlab 中常用的型別有整數,浮點數,布林值,字元,字串,矩陣(或是陣列)以及異質陣列(cell),除了

及異質陣列

之位,多數的型別都是一般電腦語言常見的。phthon 中多了一些特別的型別使得在程式撰寫上,又多了一些彈性。首先,phthon 中的串列(list)等同於matlab 中的及異質陣列,串列裡的元素型態不需拘泥於同一種格式,串列又可視為陣列的一中擴充,只是在形態上更具彈性。彈性有時是好事,但過度的彈性又會讓程式設計師一不小心就製造乙個難以糾正的bug,因此在python 中特別出現一種無法更改內容的型為元組(tuple)。在python中串列是用中括號[... ] 表示,而元組是用小括號(... ) 表示。無論是串列或是元組,都是一種有序的型別,意思是可以用指標(index) 去讀取特定位置所儲存的資料。python 的另乙個特別的型別叫做辭典,辭典是乙個無序的資料型別,用大括號來表示,要讀取辭典內的資料必須用鑰匙來開啟。例如 a = 。要讀取a 辭典內的資料,不能用a, a 這種方式,因為辭典是乙個無序的資料型別。a 中的name, age 以及url 我們稱為鑰匙,鑰匙後面加乙個冒號(:),冒號後面所接的,就是存放在這鑰匙所保管的箱子裡的資料。 

5、python 省去了end 這種表示程式塊結尾的用法,並且在程式塊的第一行,用到":" 符號代表程式塊的開始。少了end 程式要如何判別呢?python 用敘述對齊的方式,來判斷程式塊是否結束(即程式塊必須是tab鍵對齊的)。例如,

for i in range(5): 

print i

print 'end'

這裡for 程式塊和最後一行的print 是同級的,for程式塊只做到第乙個print 指令。

6、在matlab 裡我們用'%' 符號代表程式中的注釋,在python 裡,我們用'#' 代替。

除此在外在語法的關鍵字上還有一些區別,如matlab的函式定義用function,python用def等。

python與MATLAB混用問題

在python中需要呼叫matlab使用時,會出現no module named matlab.engine 使用pip進行安裝後,出現 matlab is not a package 解決問題 1.在matlab軟體安裝路徑下,找到檔案目錄 extern engines python 具體如下所示...

python中numpy與matlab的對應關係

通用函式等價表 matlab numpy說明 help func info func or help func orfunc?在ipython環境下 檢視關於func的幫助文件 type func source func orfunc?在ipython環境下 當func不是內建函式時,查詢它的 a ...

Matlab 與python 部分函式說明

python 用法 mat 1 12 mat 1 2 3 4 5 6 7 8 9 10 11 12 reshape mat,3,4 ans 1 4 7 10 2 5 8 11 3 6 9 12matlab 用法 a 1 4 7 10 2 5 8 11 3 6 9 12 b reshape a,2,6...