При объединении массивов вы должны убедиться, что они отсортированы (по col1, затем col2, затем col3).К счастью, функция union
делает именно это.
В вашем примере, где значения в 1-м и 2-м столбцах всегда уникальны, мы можем только наблюдать значения в 1-м столбце, чтобы выбрать правильные строки.Это происходит, когда diff
возвращает ненулевое значение (что означает, что это нижняя строка группы):
a = [ 1 10 20; 2 11 22; 3 12 34; 4 13 12];
b = [ 3 12 1; 4 13 25; 5 14 60; 6 15 9];
c = [ 1 10 20; 2 11 22; 3 12 34; 4 13 25; 5 14 60; 6 15 9 ];
u = union(a,b,'rows'); % this merges and sorts the arrays
r = u(logical([diff(u(:,1)); 1]),:); % since the array is sorted, the last entry will have
% the maximum value in column 3
assert(isequal(r,c));