Wenn Sie herausfinden möchten, Welche Werte Duplikate innerhalb der Zeile sind, können Sie etwas tun:
[vals, col_idx] = sort(A,2);
idx = bsxfun(@plus,(col_idx-1)*size(A,1), (1:size(A,1))');
is_duplicate(idx(:,2:end)) = vals(:,1:end-1) == vals(:,2:end);
is_duplicate = reshape(is_duplicate, size(A));
is_duplicate =
0 0 1 0 0 0 1
0 0 0 0 1 0 0
0 0 0 0 0 0 0
Von dort kommt es, was Ergebnis die Sie suchen. Sie könnten die Duplikate zu NaN
oder einen anderen Wert festgelegt, oder Sie sie auf NaN
setzen konnte, aber sie dann bis zum Ende der Zeile verschieben, so etwas wie die folgenden verwenden:
col_idx = cumsum(~is_duplicate, 2);
idx = bsxfun(@plus,(col_idx-1)*size(A,1), (1:size(A,1))');
A_new = nan(size(A));
A_new(idx(~is_duplicate)) = A(~is_duplicate);
A_New =
2 3 5 6 7 NaN NaN
1 2 5 4 6 7 NaN
7 5 3 9 8 1 2
Das Ergebnis kann keine Matrix mehr sein, da jede Zeile eine andere Länge hat. Welche Art von Ergebnis möchten Sie? Zellarray von Zeilenvektoren? –