基于对在 MATLAB 矩阵中添加值

Add values in MATLAB matrix based on pairs

如果之前有人问过类似的问题,我们深表歉意。从表面上看,这似乎应该是一个简单的问题,但我无法描述它——更不用说解决它了!假设我有一个 5 x 3 矩阵,看起来像这样:

A = [50  1  2
     75  2  3 
     20  2  3
     10  1  1
     90  1  2]

我想对第一列中的值求和,只要第二列和第三列中有一对在其他地方重复。所以,我正在尝试将 A(上图)转换为 3 x 3 矩阵 B,其中:

    B = [140  1  2
         95   2  3 
         10   1  1] 

仅添加了第 1 列中的值,我需要它们与 "caused" 它们要组合的对保持匹配。我想我还应该补充一点,第 2 列和第 3 列中值的顺序确实很重要,因为 3,4 算作与 4,3 不同的一对。 (当然,我的实际数据包括第 2 列和第 3 列中的值,范围在 100 以内,因此实际上不可能为每种可能的组合编写 if 语句...)

如有任何建议,我们将不胜感激!我正在研究 'find' 上的文档,偶然发现了一个叫做 'ismember' 的东西——我需要使用它的一些应用程序吗?

通常的unique - accumarray夫妇适合这份工作:

[u, ~, v] = unique(A(:,2:end), 'rows', 'stable');
B = [accumarray(v, A(:,1)) u];