如何将MATLAB代码重写为关于迭代的Python代码?
我遇到了一个问题 我在下面画了这个数字 用MATLAB/Octave编写的代码如何将MATLAB代码重写为关于迭代的Python代码?,python,matlab,code-conversion,Python,Matlab,Code Conversion,我遇到了一个问题 我在下面画了这个数字 用MATLAB/Octave编写的代码 t=[0,0.01,0.98] y2=cos(8*pi*t); plot(t,y2); 我试图将其写入Python代码,但失败了。 我有一些python代码的线索,如下所示 def drange(begin, end, step): n = begin while n+step < end: yield n n += step def drange(开始、结束、步骤):
t=[0,0.01,0.98]
y2=cos(8*pi*t);
plot(t,y2);
我试图将其写入Python代码,但失败了。
我有一些python代码的线索,如下所示
def drange(begin, end, step):
n = begin
while n+step < end:
yield n
n += step
def drange(开始、结束、步骤):
n=开始
当n+步进<结束:
产量
n+=阶跃
您的MATLAB
代码不会创建您显示的绘图。这是因为t
不是一个范围,而是一个包含3个值0、0.01和0.098的向量,因此它只绘制这3个点:
修复您的MATLAB
代码
要创建在MATLAB中显示的绘图,可以执行以下操作:
t=[0:0.01:0.98];
y2=cos(8*pi*t);
plot(t,y2);
请注意,使用了:
而不是,
,以指定所需的值范围为0到0.98,步长为0.01,而不是三个值0、0.01和0.98的向量
在python
中重新创建绘图:
使用,以及numpy提供的cos
和pi
功能
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0,0.99,0.01)
y = np.cos(8*np.pi*t)
plt.plot(t, y)
plt.show()
您的MATLAB
代码不会创建您显示的绘图。这是因为t
不是一个范围,而是一个包含3个值0、0.01和0.098的向量,因此它只绘制这3个点:
修复您的MATLAB
代码
要创建在MATLAB中显示的绘图,可以执行以下操作:
t=[0:0.01:0.98];
y2=cos(8*pi*t);
plot(t,y2);
请注意,使用了:
而不是,
,以指定所需的值范围为0到0.98,步长为0.01,而不是三个值0、0.01和0.98的向量
在python
中重新创建绘图:
使用,以及numpy提供的cos
和pi
功能
import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0,0.99,0.01)
y = np.cos(8*np.pi*t)
plt.plot(t, y)
plt.show()
@sacul事实上,它与Python代码非常相似。事实上,在MATLAB/倍频程代码中,0表示开始,0.01表示步进,0.98表示结束。请编写您的尝试。谢谢你据我所知,你在matlab和python中发布的是一个向量/浮点列表。如果您在python中查找0到0.98的范围,则必须使用numpy
:将numpy作为np导入t=np.arange(0,0.98,0.01)
。此外,请提供更多的代码作为上下文。这段代码是有效的python代码,但根据您的描述,它似乎被用来做其他事情。但是如果没有代码,就不清楚“其他东西”是什么。@sacul:MATLAB范围包括end,而numpy范围不包括end。所以它需要是np.arange(0,0.99,0.01)
@sacul实际上,它与Python代码非常相似。事实上,在MATLAB/倍频程代码中,0表示开始,0.01表示步进,0.98表示结束。请编写您的尝试。谢谢你据我所知,你在matlab和python中发布的是一个向量/浮点列表。如果您在python中查找0到0.98的范围,则必须使用numpy
:将numpy作为np导入t=np.arange(0,0.98,0.01)
。此外,请提供更多的代码作为上下文。这段代码是有效的python代码,但根据您的描述,它似乎被用来做其他事情。但是如果没有代码,就不清楚“其他东西”是什么。@sacul:MATLAB范围包括end,而numpy范围不包括end。所以它需要是np.arange(0,0.99,0.01)
考虑到0.98和0.99是不精确的,舍入可能是关闭的,我会使用类似于0.985的限制来确保正确的点数。或者,您也可以使用np.linspace(0.0,0.98,99)
这些只是吹毛求疵。回答得很好。很好地解决了OP的所有问题。考虑到0.98和0.99是不精确的,四舍五入可能会关闭,我将使用0.985作为限制,以确保正确的点数。或者,您也可以使用np.linspace(0.0,0.98,99)
这些只是吹毛求疵。回答得很好。很好地解决了OP的所有问题。