【问题标题】:How to ReWrite a MATLAB code to Python code about Iteration?如何将 MATLAB 代码重写为有关迭代的 Python 代码?
【发布时间】:2018-07-21 14:41:47
【问题描述】:

我遇到了一个问题。

我在下面画了这个图

使用 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

【问题讨论】:

  • @sacul 确实,它与 Python 代码非常相似。其实在MATLAB/Octave代码中0代表开始,0.01代表步,0.98代表结束。
  • 请写下你的尝试。谢谢
  • 据我所知,您在 matlab 和 python 中发布的是一个向量/浮点数列表。如果您在 python 中寻找 0 到 0.98 的范围,则必须使用 numpy: import numpy as np 后跟 t=np.arange(0,0.98,0.01)
  • 另外,请提供更多代码作为上下文。此代码是有效的 python,但根据您的描述,它似乎用于执行其他操作。但是没有代码就不清楚“其他东西”是什么。
  • @sacul:MATLAB 范围包括结束,而 numpy 范围不包括。所以它需要是np.arange(0, 0.99, 0.01)

标签: python matlab code-conversion


【解决方案1】:

您的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 中重新创建情节:

使用np.arange,以及numpy提供的cospi函数

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()

【讨论】:

  • 鉴于 0.98 和 0.99 不精确并且舍入可能会关闭,我会使用 0.985 作为限制来确保正确的点数。或者,您可以使用np.linspace(0.0, 0.98, 99)
  • 那些只是吹毛求疵。优秀的答案。很好地解决了 OP 的所有问题。
猜你喜欢
  • 2022-12-30
  • 2021-03-26
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多