2

我有一个这样的矩阵:

1 2 4
4 5 6
1 2 4
7 9 6
1 2 4

我想删除相同的行。我的新矩阵应该是

4 5 6
7 9 6

我怎样才能做到这一点?

4

4 回答 4

5

基于unique( ,'rows')@tayler 的更完整的解决方案是

[uA, ~, ui] = unique(A, 'rows'); % we have a single copy of each row.
% it is now left to determine which row is duplicate 
n = hist( ui, 1:max(ui) );
sel = n == 1; % pick only indices that appear once
uA = uA(sel, :);
于 2012-12-17T06:30:34.723 回答
4

一个好的起点是:

b = unique(A, 'rows')
于 2012-12-14T17:42:24.763 回答
1

您可以尝试从所有其他行中减去一行,如果任何行包含全零,您就知道它包含重复的元素。

于 2012-12-14T17:32:55.823 回答
1

我认为这个脚本可能会做你想做的事:

B= A;
position = 1;
condition = true;
bSize = size(B,1);
while (position < bSize)
    [~,~,ic] = unique(B,'rows');
    changes = find(ic(position:end,:)== ic(position));
    if (length(changes)>1)
        B(changes+position-1,:)= [];
        bSize = size(B,1);
    else
        position = position+1;
    end
end
disp(B)
于 2012-12-16T15:52:56.727 回答