【问题标题】:How to write the Python equivalent to this MatLab For Loop [duplicate]如何编写与此 MatLab For Loop 等效的 Python [重复]
【发布时间】:2021-04-19 05:46:28
【问题描述】:

我在 MatLab 方面有经验,目前正在过渡到 Python。以下是我在 MatLab 中编写的 For loop 的结构,但我不明白如何用 Python 编写它。

(顺便说一句,这里包含的值并不重要,而且大多是虚拟/修辞,我对这种方法更感兴趣)

U = 11;
dt = 0.1;
N = 100;
L = 120;

t(1)=0;
v(1)=0; v_(1)=0;
r(1)=0; r_(1)=0;
    
for i=2:N

    t(i)=dt*(i-1);
    v_(i-1)=v(i-1)/U; 
    r_(i-1)=r(i-1)/(U/L);
end

基本上,我想在 for 循环中执行数学计算并获得每个值,以制作 X、Y 图。我该如何处理?

提前致谢!

编辑:这是我目前所拥有的。

U = 11
dt = 0.1
N = 100
L = 120

t = []
v_ = []
r_ = []
v = []
r = []

for i in range(N):
    t[i] = dt * (i - 1)
    v_[i - 1] = v[i - 1] / U
    r_[i - 1] = r[i - 1] / (U / L)

    t.append()
    v_.append()
    r_.append()

print(t)
print(v_)
print(r_)

【问题讨论】:

  • 您好,感谢您的回复。是的!我也寻找过类似的问题。我了解如何制定 for 循环并将值附加到列表中。但是我不知道如何处理两边的第i个(i和(i-1))项。
  • 我建议您尝试在 Matlab 和 Python 中打印您的 i 变量...
  • 你当前的 Python 代码有什么问题吗?您能解释一下 Matlab 代码的作用以及您在 Python 中编写代码时遇到的问题吗?
  • 给定的 MATLAB 代码会引发错误,因为您没有正确更新您的变量(给定的 vr 等未初始化;根据给定的代码假设)。除此之外,我强烈建议您查看NumPy 库。有一个专用的NumPy for MATLAB users tutorial
  • @tripleee 我的 Python 代码错误,因为我认为 i in range(N) 以 0 开头(在 MatLab 中以 1 开头)。我认为这也是@Matteo V 对评论的意图。

标签: python matlab for-loop


【解决方案1】:

这样的?

U = 11
dt = 0.1
N = 10
L = 120

t = [0 for _ in range(N)]
v_ = [0 for _ in range(N)]
r_ = [0 for _ in range(N)]
v = [0 for _ in range(N)]
r = [0 for _ in range(N)]

for i in range(1, N+1): # = matlab i=2:N
    if i < N:
        t[i] = dt * (i - 1)
    v_[i - 1] = v[i - 1] / U
    r_[i - 1] = r[i - 1] / (U / L)

print(t)
print(v_)
print(r_)

你能发布一些预期的输出吗?目前结果并没有真正意义。

【讨论】:

  • 谢谢!这足以让我遵循和学习这种方法。我现在明白错误了:) 很抱歉我的问题和提供的代码没有多大意义。我只想知道任何方法,所以我可以尝试自己学习其余的方法。再次感谢您!
  • 目前它会在没有 if 语句的情况下中断。
猜你喜欢
  • 2019-11-10
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-12-09
相关资源
最近更新 更多