我试图用python重写一段MATLAB片段,因为我不太习惯使用MATLAB。
a = 0.5
b = 50
ph = (eps:a:b)
这就是我尝试转换为Python的问题,但问题是我真的不知道最后一行是做什么的。因此,我无法继续
答案 0 :(得分:4)
在MATLAB中,您通过0
步骤提出了从50
到0.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,)