と一致した場合、私は完璧に動作し、以下の機能を持っていますが、私はそれにベクトル化を適用したいと思います...ベクトル化ロジック指数は
for i = 1:size(centroids,1)
centroids(i, :) = mean(X(idx == i, :));
end
そのインデックスに対応するすべてのX
の値に対して、mean
の値を計算します。
これはベクトル化での私の試みである、コードを壊しidx == [1:size(centroids,1)]
次のように私の解決策は動作しませんし、私はなぜ...
centroids = mean(X(idx == [1:size(centroids,1)], :));
を知っています。 idx
が1
からsize(centroids,1)
までの数字のいずれかと等しいかどうかをチェックする方法はわかりません。
TL:drは
あなたが細胞内に行列を分割し、その内側の操作でループを適用する(cellfun
を使用して、各セルからの平均値を取ることができ、ベクトル
Xベクトルの例を与えることができます – anyanwu
実際にはforループはここでは冗長です。 idxの値はiと1回だけ等しくなります。あなたは 'centroids(idx、:) = mean(X(idx、:));'を達成するためにこの行を使うことができます。しかし、あなたの質問から明らかではない別の何かをしたい場合は、 'X 'の値の例と' centroid'のための望ましい出力を提供する必要があります – anyanwu