1

我需要在一列中删除两个矩阵的重叠行。

例如:

矩阵 1:

1, 5;
2, 23;
3, 51;
4, 21;
5, 661;

矩阵 2:

4, 11;
5, 601;
6, 341;
7, 5;
etc.

会导致:

结果矩阵:

1, 5;
2, 23;
3, 51;
4, 11;
5, 601;
6, 341;
7, 5;

谢谢!基督教

4

2 回答 2

3

或者,始终保持所选列中的最后一次出现:

x = [x1;x2];
columnIndex = 1; % column 1 
[~, i] = unique(x(:, columnIndex), 'last');
xMerge = x(i, :);

适用于多个矩阵和不同列进行索引。

于 2012-08-16T22:55:18.867 回答
2

您可以使用union附加的索引输出。

x1 = [ ...
    1, 5; ...
    2, 23;...
    3, 51;...
    4, 21;...
    5, 661];

x2 = [ ...
    4, 11;...
    5, 601;...
    6, 341;...
    7, 5];

[~, ixs1, ixs2] = union(x1(:,1), x2(:,1));


xMerge = [...
    x1(ixs1,:); ...
    x2(ixs2,:)];

这导致:

>> xMerge 
xMerge =
     1     5
     2    23
     3    51
     4    11
     5   601
     6   341
     7     5
于 2012-08-16T22:26:08.880 回答