私はMatlabのforループをベクトル化しようとしてきました。プログラム全体にボトルネックがあるからですが、ループの中の単一の行列の異なる行や列を反復処理するときはどうすればよいか分かりません。ここでは、コードがあります:同じ行列/配列の異なるインデックス上で操作するためにネストされたforループをベクトル化する方法はありますか?
// X is an n*k matrix, W is n*n
// W(i,j) stores the norm of the vector resulting from subtracting
// the j-th line of X from its i-th line.
for i = 1:n
for j = 1:n
W(i,j) = norm(X(i,:) - X(j,:))
end
end
編集:
それは私と私のアルゴリズムの背後にある数学的な考え方に近いです1のための最も便利だったと私はルイス・Mendoの答えを選んだ、まだすべての3つの答えが正しかったとMATLAB Toolboxやコード作成の方法によって、最も便利なものを使用することをお勧めします。
また、インデックスを格納する配列を使用したり、現在の配列を再構成したり、もう1つの次元を使用して、すべての回答の共通点が異なる形式を使用していたことに気付きました... あなたが似たような問題を抱えている場合、探検するのに適切なこと。
あなたはすでに内部をvectoriseしようとしたことがありループのみ? – m7913d