0

要素ごとに実行したい計算があります。

foreach i from i=1 to i=N
    RES_i = det(A - V_i * I) // notice V_i and RES_i are SCALARS

たとえば、 A は 3x3 、 I は 3x3 、 V と RES は 1xN です。

基本的に私がしていることは

idx=1:81
res(idx) = det( A - V(idx)*I );

しかし、これは V の全体を取り、I を掛けると解釈されます。

これは単純な例のようですが、ベクトル化する方法がわかりません...

ありがとう。

4

2 に答える 2

0

まず、これは Matlab コードではありません...

2番目:「ベクトル化」と暗黙のループを混同していると思います。ベクトル化とは、ベクトル/行列/テンソル表記と演算を使用して、一度に配列全体に演算を適用することを意味します。ただし、必要なのは暗黙の for-each 型ループであり、Matlab がそれについて不平を言うのは完全に理にかなっています。

明示的に書き出す以外に方法はありません。

res = zeros(81,1);
for ii = 1:numel(res)
    res(ii) = det(A-V(ii)*I);
end
于 2012-10-30T11:27:19.257 に答える
0

を使用して、要素ごとの操作を実行します。選択したオペレーターと一緒に。例えば:

Element-by-element multiplication: .* 
Element-by-element division: ./

など・・・ということでしょうか。

于 2012-10-30T11:37:51.503 に答える