Это вопрос об увеличении одного значения массива MATLAB несколько раз в одном и том же операторе без использования цикла for.Увеличение одного значения массива MATLAB несколько раз в одной строке
Я установил мой массив как:
>> A = [10 20 30];
А затем запустить:
>> A([1, 1]) = A([1, 1]) + [20 3]
A =
13 20 30
Очевидно, что 20 игнорируется. Тем не менее, я хотел бы, чтобы это было включено, так что:
>> A = [10 20 30];
>> A([1, 1]) = A([1, 1]) + [20, 3]
даст:
A =
33 20 30
Есть ли функция, чтобы это сделать в хорошем, vectorised моды?
(В действительности, индексация в массив будет включать в себя несколько индексов, так что это может быть [1 1 2 2 1 1 1 1 3 3 3]
и т.д., с массивом чисел, чтобы увеличить путем (на [20, 3]
выше) той же длины.)
aaargh, 30 секунд быстрее :) – Adrien
Спасибо, у меня есть тот первый, кто работает с удовольствием. Я считаю, что в SUBS отсутствует символ транспонирования, хотя я могу только сделать «A = accumarray ([1: numel (A) index] ', [A increment]);' work. Я сделаю некоторые сравнения скорости для второго предложения, как только мои данные будут заполнены. –
@Bill: Вы правы. Я забыл, что первый вход должен быть вектором столбца в этом случае. В общем случае первый вход должен быть матрицей M-by-N, где M - количество накопленных значений, а N - количество индексов (в этом случае 1, но больше для многомерного индексации). – gnovice