Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将MATLAB代码重写为关于迭代的Python代码?_Python_Matlab_Code Conversion - Fatal编程技术网

如何将MATLAB代码重写为关于迭代的Python代码?

如何将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(开始、结束、步骤):

我遇到了一个问题

我在下面画了这个数字

用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(开始、结束、步骤):
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的所有问题。