Python等效于给定的MATLAB代码

时间:2017-03-03 20:00:56

标签: python matlab

我试图用python重写一段MATLAB片段,因为我不太习惯使用MATLAB。

a = 0.5 
b = 50
ph = (eps:a:b) 

这就是我尝试转换为Python的问题,但问题是我真的不知道最后一行是做什么的。因此,我无法继续

1 个答案:

答案 0 :(得分:4)

在MATLAB中,您通过0步骤提出了从500.5的一系列数字。可以这样做:ph=0:0.5:50;

由于某种原因(可能除以零),您可以在MATLAB中用最小的机器编号0替换范围中的eps

eps =

     2.220446049250313e-16

python中的等价物可以是使用arange函数来生成具有特定步骤(arange doc)的一系列数字。 如果您导入numpy,则可能是这样的:

import numpy as np
np.arange(np.finfo(float).eps,50,0.5)

但是,如评论中所述,要包含端点,一种方法是手动向范围添加一个步骤。

np.arange(np.finfo(float).eps,50+0.5,0.5)

通过这样做,端点将为50.5,范围将根据您的需要停在50

另一种方法是使用linspace,如下所示:

np.linspace(np.finfo(float).eps, 50, 50/0.5+1, endpoint=True)

您可以在此处提供要包含在范围内的endpoint。缺点是您需要定义元素的数量而不是步长(linspace doc)。

两个矢量应该具有相同的大小,您可以检查:

np.shape(np.linspace(np.finfo(float).eps, 50, 50/0.5+1, endpoint=True))
(101,)
np.shape(np.arange(np.finfo(float).eps,50+0.5,0.5))
(101,)