Стабильный кластер в MATLAB

Встроенная функция MATLABaccumarray принимает функциюfun в качестве четвертого аргумента.

A = accumarray(subs,val,sz,fun);

Это относитсяfun для каждого подмножества элементов вval которые имеют идентичные подписки вsubs, Документация однако заявляет:

Если подписки вsubs не сортируются по своим линейным показателям,fun не должно зависеть от порядка значений во входных данных.

Как мы можем реализоватьстабильный версияaccumarray, который не имеет этого ограничения, но гарантирует, что подмножества принимают тот же порядок, что иval?

Пример:

subs = [1:10,1:10];
val = 1:20;
accumarray(subs(:), val(:), [], @(x)x(end)).'

Ожидаемый результат этого будет11:20 еслиaccumarray были стабильны. На самом деле вывод:

ans =
    11    12    13    14     5     6     7    18    19    20

Наша реализация должна дать:

accumarrayStable(subs(:), val(:), [], @(x)x(end)).'`
ans =
    11    12    13    14    15    16    17    18    19    20

Ответы на вопрос(1)

Ваш ответ на вопрос