Сам был удивлен!
Могу лишь сделать предположение, что при выполненни операции результат хранится во временном массиве и переносится в
b только в самом конце (т.е. каждый раз используется обнуленный входной масив). Это подтверждается следующим примером:
Код
>> clear
>> b = zeros(1,8);
>> a = [1 2 3 4];
>> idx = [2 2 2 2];
>> b(idx) = b(idx) + a
b =
0 4 0 0 0 0 0 0
По поводу того, правильно это или нет - боюсь сказать ничего не смогу т.к. про Matlab читал не много, да и пользуюсь им не часто...