賈維斯的智慧工坊

  • Home
  • About
  • Note
  • Project
  • Experience
  • Service
  • Sitemap


MY | NOTES

  1. 首頁
  2. >
  3. 筆記
  4. >
  5. 分享

如何改寫程式?MATLAB轉Python總整理

程式語法的差別(持續更新)
Jun, 2019

早年學術研究習慣使用MATLAB
數值運算、視覺化資料都很方便
但現在很多AI作品都轉移到Python開發
雖然有一些自動轉換的工具可以使用
但有些地方還是會出現問題
無法將功能完美移植

更多精彩文章
Python技巧:新手提升效率的必學語法
[Python] 程式加速:Cython環境安裝與範例
[心得] 無瑕的程式碼:敏捷軟體開發技巧
[TensorFlow] 環境安裝(Anaconda與GPU加速)
[Python] 速度比較:Numpy與內建函式
因此我選擇人工逐行改寫
確保每個變數的值都能一模一樣
也趁機好好重構,寫出無瑕的程式碼
以下將整理MATLAB與Python的語法差別

如果想要我幫你改,也歡迎參考我的服務業面

程式風格 Coding Style

大家可以到連結中看細節,我這邊只介紹幾個命名

MATLAB: Style Guidelines 2.0

everyName	# 所有名稱

Python: PEP 8

ClassName	# 類別
normal_var	# 一般變數
get_score()	# 函式

運算符號

和

&&	# MATLAB
and	# Python

或

||	# MATLAB
or	# Python

不等於

~=	# MATLAB
!=	# Python

次方

2^3		# MATLAB
2**3	# Python

索引

起始值

a(1)	# MATLAB 從1、小括號
a[0]	# Python 從0、中括號

最後一個值

a(end)	# MATLAB
a[-1]	# Python

範圍

a(1:3)	# MATLAB 代表1、2、3
a[1:3]	# Python 代表1、2,不包含3

矩陣

範圍:輸出矩陣 [1, 2, 3]

1:3				# MATLAB
np.arange[1:4]	# Python

範圍:輸出矩陣 [3, 2, 1]

3:-1:1				# MATLAB
np.arange[3:0:-1]	# Python

刪除列

a(1, :) = []			# MATLAB
np.delete(a, 0, axis=0)	# Python

刪除行

a(:, 1) = []			# MATLAB
np.delete(a, 0, axis=1)	# Python

尋找某元素的索引

find(a == 0)		# MATLAB
np.where(a == 0)	# Python

增加元素到矩陣最後面 a = [1, 2]

# MATLAB
a = [1]
a = [a 2]

# Python
a = [1]
a.append(2)

增加元素到矩陣最前面 a = [2, 1]

# MATLAB
a = [1]
a = [2 a]

# Python
a = [1]
a.insert(0, 2)
★ 推薦:博客來試閱 ★
無瑕的程式碼:
敏捷軟體開發技巧守則
簡潔的Python:
重構你的舊程式

Reference

[1] NumPy_for_Matlab_Users
[2] [转]MATLAB与Python语言区别总结整理汇总


← Back to note