【发布时间】:2013-06-27 14:30:02
【问题描述】:
y = 0;
for m = 0:variable
for n = 0:m
y = y + f(n,m);
end
end
我用这种方式矢量化了内循环,
y = 0;
for m = 0:variable
n = 0:m
y = y + f(n,m);
end
这使我的代码速度提高了大约 60%。如何也向量化外循环?
【问题讨论】:
-
你的循环相当于简单的
y = f(variable, variable)...你确定你不是要分配给y(m+1)...吗? -
你不断地用 f 的输出覆盖 y,所以只有最后的迭代会做任何事情。 f 是数组还是函数?如果是一个函数,那么如何“向量化”完全取决于 f 正在做什么。
-
你能提供更多关于你的函数
f的细节吗?两个参数都可以是向量吗?有什么限制?如果将向量参数传递给f,它的输出是什么? -
它总是取决于你的问题,如果你可以用向量操作代替循环。正如有人所说:你真正的问题是什么?
-
感谢您指出错误。我已经编辑了问题。
标签: matlab vectorization nested-loops