【发布时间】:2014-09-05 23:45:57
【问题描述】:
我希望能够进一步矢量化以下代码以尝试删除 for 循环:
A = randi(5,1,100);
for X = unique(A)
B(A==X) = sum(randi(17,sum(A==X),X),2);
end
基本上,它将 1 到 5(由 A 指定)随机数相加 1 到 17,100 次。这发生了多次,B 在接下来的迭代中被替换为A。循环的数量随着每一步呈指数增长,我需要进行 10^9 次试验而不是 100 次,所以我想尽可能多地删除。任何帮助,将不胜感激。谢谢!
【问题讨论】:
-
您无法将其向量化,因为
B在每次迭代中都会不断发生变异。但是,如果您喜欢使用arrayfun/cellfun,则可以将其制成一个包含每次迭代的元素的 5 元素元胞数组,但这本身就较慢。查看这篇文章了解更多详情:stackoverflow.com/questions/12522888/…
标签: matlab loops random iteration vectorization