簡體   English   中英

Matlab代碼轉換為Python

[英]Matlab code convert into Python

我從事Matlab編程已有多年了,最近有人提出將Python作為未來的建議。 有興趣的我開始學習它。 我不想將兩者進行比較,目前正處於Python的學習階段。 由於我有很多用Matlab編寫的代碼(更重要的是在Matlab中講),我認為Matlab中幾乎所有的命令都會有一個等效的命令。 我們使用

k = 1:n;

Matlab中有很多。 但是在Python中,我只是努力地使這一簡單的事情起作用。 我嘗試使用arange,但從未真正意識到錯誤是什么:

>>> arange(1,]10[,1,])
File "<stdin>", line 1
arange(1,]10[,1,])
         ^
SyntaxError: invalid syntax
>>> arange(1,10[,1,])
  File "<stdin>", line 1
    arange(1,10[,1,])
                ^
SyntaxError: invalid syntax
>>> arange([1,]10[,1,])
  File "<stdin>", line 1
    arange([1,]10[,1,])
                ^
SyntaxError: invalid syntax
>>> np.arange
<built-in function arange>
>>> arange([1], 10[,1])
  File "<stdin>", line 1
    arange([1], 10[,1])
                   ^
SyntaxError: invalid syntax

我去了numpy網站 ,嘗試在那里提供語法,但是再次:

>>> import numpy as np
>>> np.arange([1],10[,1],dtype=None)
  File "<stdin>", line 1
    np.arange([1],10[,1],dtype=None)
                     ^
SyntaxError: invalid syntax

我不會寫這篇文章只是為了澄清這種事情,但是我的意思是為什么這個最簡單的Matlab命令在Python中如此復雜? 我什至使用此工具將.m代碼轉換為.py代碼,收效甚微。

該錯誤來自於函數調用中不匹配的方括號。 在文檔中,方括號僅表示某些可選內容,不包括在調用中。 還要注意,該功能是range命令中python固有的功能,您無需使用numpy。

Matlab:

n=5;
k=1:n

蟒蛇:

n=5
k=range(1,n+1)

使用numpy:

import numpy as np
n=5
k=np.arange(1,n+1)

我建議安裝ipython。 作為也已經從matlab遷移到python的人,這是理解語法而又不會重復運行腳本的必不可少的工具。 http://ipython.org/

k = 1:n; 等價

k = range(1, n+1)

要么

k = np.arange(1, n+1)

請注意,Python的索引從0而不是1開始。 如果使用k為數組建立索引,則應使用

k = np.range(n) # which is [0, 1, ..., n-1]

鏈接可能對Matlab用戶有幫助。

在numpy中有幾種方法可以做到這一點。 這是最簡單的:

import numpy as np
n = 5
k = np.r_[1:n+1]

另一種方法是從0開始加1,但這有點慢(在我的系統上,n = 1000000,它慢了約1.5毫秒):

import numpy as np
n = 5
k = np.r_[:n]+1

請注意,如果您從0開始,則可以省略初始的零。

您可以使用arange做類似的事情:

import numpy as np
n = 5
k = np.arange(n)+1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM