相关疑难解决方法(0)

在MATLAB中稳定准确

MATLAB的内置函数accumarray接受函数fun作为第四个参数.

A = accumarray(subs,val,sz,fun);
Run Code Online (Sandbox Code Playgroud)

这适用fun于val具有相同下标的元素的每个子集subs.但文件说明:

如果下标subs未按其线性索引排序,则fun不应取决于其输入数据中值的顺序.

我们如何实现一个没有这个限制的稳定版本accumarray,但是会保证子集采用与给定的相同的顺序val?

例:

subs = [1:10,1:10];
val = 1:20;
accumarray(subs(:), val(:), [], @(x)x(end)).'
Run Code Online (Sandbox Code Playgroud)

这样做的预计产出将是11:20,如果accumarray是稳定的.实际上输出是:

ans =
    11    12    13    14     5     6     7    18    19    20
Run Code Online (Sandbox Code Playgroud)

我们的实施应该产生:

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

matlab stable-sort accumarray

5
推荐指数
1
解决办法
430
查看次数

标签 统计

accumarray ×1

matlab ×1

stable-sort ×1