Matlab代码转换为Python

时间:2014-04-15 08:59:22

标签: python matlab

我已经在Matlab编写了很多年,最近很多人将Python作为未来推荐。感兴趣我开始学习它。我不想比较这两个,目前我正处于Python的学习阶段。由于我在Matlab中编写了很多代码(更重要的是在Matlab中进行了讨论),我认为对于“几乎”来说,会有一个相同的命令。 Matlab中的所有命令。我们使用

k = 1:n;
在Matlab中有很多。但是在Python中我只是很难让这个简单的事情发挥作用。我尝试使用范围,但从未真正意识到错误是什么:

>>> 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 website并尝试在那里提供语法,但是又一次:

>>> 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中如此复杂?我甚至使用this tool将.m代码转换为.py代码,效果甚微。

3 个答案:

答案 0 :(得分:0)

错误来自函数调用中不匹配的方括号。在文档中,方括号仅表示某些内容是可选的,它们不包含在调用中。另请注意,此功能在range命令中是python原生的,您不需要使用numpy。

Matlab的:

n=5;
k=1:n

的Python:

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/

答案 1 :(得分:0)

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]

link可以帮助Matlab用户。

答案 2 :(得分:0)

有几种方法可以在numpy中执行此操作。最简单的是:

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

另一种方法是从0开始并加1,但这稍微慢一些(在我的系统上n = 1000000时慢了大约1.5 ms):

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

请注意,如果从0开始,则可以不使用初始零。

您可以使用范围执行类似操作:

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