Найти наименьшее значение в столбце для каждого уникального 2 значения в других столбцах Matlab

У меня есть матрица, небольшая выборка данных:

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, предпочтительно в новой матрице.

Таким образом, результат будет:

B=

1 3 658

2 3 475

5 3 118

6 7 617

Не могли бы вы указать мне, как лучше всего это сделать? заранее спасибо

2 ответа

Решение

Сочетание sortrows а также unique с rows Вариант должен дать вам желаемый результат.

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,:); 

Если значения в первых двух столбцах являются положительными целыми числами, а значения в третьем - ненулевые, вы также можете сделать это следующим образом:

[ii, jj, vv] = find(accumarray(A(:,[1 2]), A(:,3), [], @min, 0, true));
B = [ii jj vv];
Другие вопросы по тегам