【发布时间】:2017-05-08 04:21:18
【问题描述】:
我有以下功能完美,但我想对其应用矢量化...
for i = 1:size(centroids,1)
centroids(i, :) = mean(X(idx == i, :));
end
它检查idx 是否与当前索引匹配,如果匹配,它会计算与该索引对应的所有X 值的mean 值。
这是我对矢量化的尝试,我的解决方案不起作用,我知道为什么......
centroids = mean(X(idx == [1:size(centroids,1)], :));
以下idx == [1:size(centroids,1)] 破坏了代码。我不知道如何检查idx 是否等于1 到size(centroids,1) 之间的任何一个数字。
tl:dr
通过向量化摆脱for循环
【问题讨论】:
-
你能举一个你的X向量的例子
-
其实这里的for循环是多余的。 idx 的值将只等于 i 一次。你可以使用这条线来完成
centroids(idx, :) = mean(X(idx, :));。但是,如果您想做一些不同的事情,顺便说一下,您的问题并不清楚,您应该提供X值的示例和centroids的所需输出
标签: matlab math octave vectorization