【发布时间】:2013-11-08 05:30:49
【问题描述】:
在 matlab 上: 我有一个向量 P。 我想将值 P(k+1) - P(k) 存储在一个新的向量 M 中。我可以使用 for 循环来做到这一点,但是有没有更有效的方法(我有一个巨大的向量)。
【问题讨论】:
-
for 循环几乎和其他任何方法一样有效,因为在后台任何其他方法都必须是类似的构造。
-
你可以使用diff
-
@PaulDraper 有一个内置函数
diff,我想它会更快,因为它可能是在c而不是Matlab中编写和优化的。但我可能是错的。它当然更具可读性。 -
@PaulDraper - 在 MATLABland 中,这与传统智慧大相径庭,轻轻地说。对于同一任务,for 循环很少能胜过适当的矢量化或内置函数。
-
@bdecaf - 具有讽刺意味的是,我在 SO 上多次提出您的相同观点,但 JIT 加速器是不可预测的,并且通常仍然不如等效的矢量化操作。我在上面发表评论是因为即使有了这些改进,第一个想法仍然不应该是“for 循环将几乎与其他任何循环一样有效”。这是一个相当的误导性陈述。请注意,我并没有说 for 循环不好,因为正如您所指出的那样,它们不再存在。不可否认,这种思维方式似乎正在走恐龙的道路,这很适合我。 :)
标签: matlab