上記の変数で上記のループを実行しています。
- A はサイズ mxn の 2 次元配列です。
- mask は、サイズが 1xn の 1 次元論理配列です。
- 結果はサイズ 1xn の 1 次元配列です
- B は mx1 形式のベクトルです。
- C は mxm 行列で、m は上記と同じです。
編集: foo(x) を関数に展開しました。
コードは次のとおりです。
temp = (B.'*C*B);
for k = 1:n
x = A(:,k);
if(mask(k) == 1)
result(k) = (B.'*C*x)^2 / (temp*(x.'*C*x)); %returns scalar
end
end
注意してください、私はすでに上記のコードを for ではなく parfor ループとして使用しています。メッシュグリッドまたはソートを使用してパフォーマンスを向上させる方法を提案できることを願っていました。RAMに問題があるとは思わないので、解決策はメモリに関しても高価になる可能性があります。
どうもありがとう。