Предположим, у меня есть два (больших) вектора a=[0 0 0 0 0]
и b=[1 2 3 4 5]
того же размера и один индексный вектор ind=[1 5 2 1]
со значениями в {1, ..., length (a)}. Я хотел бы, чтобы вычислитьВекторизация добавления подмассива
for k = 1:length(ind)
a(ind(k)) = a(ind(k)) + b(ind(k));
end
% a = [2 2 0 0 5]
То есть, я хочу, чтобы добавить эти записи из b
объявленных в ind
к a
включая кратность.
a(ind)=a(ind)+b(ind);
% a = [1 2 0 0 5]
намного быстрее, конечно, но игнорирует индексы, которые появляются несколько раз.
Как я могу ускорить выполнение вышеуказанного кода?
Какое ожидаемое поведение для индекса появляется несколько раз? хотите ли вы добавить дополнение к этому индексу только один раз? – drorco
Нет, я бы хотел добавить индекс так часто, как он появляется. Точно так же, как в for-loop выше. – Julian
Я не понимаю, почему индексы (ind) + b (ind) игнорируют индексы, которые появляются несколько раз. – GameOfThrows