В Matlab, как вычислить рабочий максимум массива для каждой группы (помечен другим массивом subs
)? Например, подумайте о массиве subs
в качестве меток для 3-х учеников и соответствующих значениях в val
в качестве тестовых оценок, я хочу вычислить текущий максимальный балл, достигнутый каждым учеником.Matlab running max по группам
>> subs = [1; 3; 1; 1; 3; 2];
>> val = [101 102 103 98 105 106];
Нужный выход имеет тот же размер, как val
и дает текущий максимальный балл достигается тем, что студент:
output = [101, 102, 103, 103, 105, 106]
Мой набор данных довольно большой, с миллионами записей, так что я хотел бы избежать используя for-loop. Если бы я просто хотел получить максимальный балл для каждого ученика, я бы использовал accumarray(subs,val,[],@max)
, но здесь проблема сложнее, так как я хочу работать максимум.
В R есть аналогичный вопрос, но я хотел бы иметь возможность сделать это в Matlab. Finding running maximum by group in R
Спасибо!