Accumarray estable en MATLAB

Función incorporada de MATLABaccumarray acepta una funciónfun como cuarto argumento.

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

Esto aplicafun a cada subconjunto de elementos enval que tienen subíndices idénticos ensubs. Sin embargo, la documentación establece:

Si los subíndices ensubs no están ordenados con respecto a sus índices lineales,fun no debe depender del orden de los valores en sus datos de entrada.

¿Cómo podemos implementar unestable versión deaccumarray, que no tiene esta limitación, pero garantizará que los subconjuntos adopten el mismo orden dado porval?

Ejemplo:

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

El resultado esperado de esto sería11:20 Siaccumarray fueron estables De hecho, la salida es:

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

Nuestra implementación debe producir:

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