在其他列Matlab中为每个唯一的2个值找到列中的最小值

时间:2017-05-26 02:02:17

标签: matlab matrix combinations unique-values

我有一个矩阵,一小部分数据样本:

A=

1 3 658

2 3 475

5 3 769

1 3 856

6 7 1579

2 3 678

5 3 118

6 7 617

现在,我想找到A列和B列的每个唯一组合,C列中的最低值,最好是在新的Matrix中。

所以输出将是:

B=

1 3 658

2 3 475

5 3 118

6 7 617

你能指出我最好的方法吗? 提前致谢

2 个答案:

答案 0 :(得分:3)

sortrowsuniquerows选项的组合可以为您提供所需的结果。

A = sortrows(A); % After the sort unique combinations will be adjacent and with increasing values in 3rd column
[~,ia] = unique(A(:,1:2),'rows'); % Find index of all the unique comb in col 1 & 2, unique only returns the first index
B = A(ia,:); 

答案 1 :(得分:1)

如果前两列中的值是正整数而第三列中的值是非零,则还可以按如下方式执行:

[ii, jj, vv] = find(accumarray(A(:,[1 2]), A(:,3), [], @min, 0, true));
B = [ii jj vv];