5

私はMatlabを初めて使用するので、これが可能かどうかはわかりません。単純なforループがあります:

for i=1:n
    B.x(indexB(i)) += A.x(i);
end

ここで、AxとBxは長さnの2つのベクトルであり、indexBは長さnのベクトルであり、Axの要素からBxへの適切なマッピングが含まれています。

このループをベクトル化することは可能ですか?

4

1 に答える 1

8

私はそう思います、この例に従って:

a = [1 2 3 4 5];
b = a;
idx = [5 4 3 2 1];
a(idx)  = a(idx) + b(1:5);

どちらが与えるべきか:

a =

 6     6     6     6     6

したがって、あなたの場合、indexBサイズがある場合は次のようにn書くことができます。

B.x(indexB) = B.x(indexB) + A.x(1:n);

それ以外の場合:

B.x(indexB(1:n)) = B.x(indexB(1:n)) + A.x(1:n);
于 2012-10-02T22:00:20.670 に答える