MATLAB的内置函数accumarray接受函数fun作为第四个参数。 A = accumarray(subs,val,sz,fun); 这对val中每个具有相同下标的元素的子集适用fun 。 但是文件指出: 如果subs中的下标不是按照它们的线性索引进行sorting的, fun不应该依赖于其input数据中值的顺序。 我们怎样才能实现稳定的accumarray版本,它没有这个限制,但是会保证子集采用与val给出的相同的顺序? 例: subs = [1:10,1:10]; val = 1:20; accumarray(subs(:), val(:), [], @(x)x(end)).' 如果accumarray是稳定的话,预期的输出是11:20 。 其实输出是: 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