5

我是 Matlab 的新手,所以我不确定这是否可能。我有一个简单的for循环:

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

其中 Ax 和 Bx 是长度为 n 的两个向量,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 回答