Wie kann ich ohne Sortierung in MATLAB den Schnittpunkt der Mengen A und B von A löschen?

StackOverflow https://stackoverflow.com/questions/3467670

  •  28-09-2019
  •  | 
  •  

Frage

Zwei Matrizen A und B:

A = [1 2 3
     9 7 5
     4 9 4
     1 4 7]

B = [1 2 3
     1 4 7]

Alle Zeilen der Matrix B sind Mitglieder der Matrix A. Ich mag die gemeinsame Zeilen von A und B von A löschen, ohne zu sortieren.

Ich habe versucht, setdiff (), aber diese sortiert die Ausgabe.

Für mein besonderes Problem (Atomkoordinaten in Proteinstrukturen) die geordnete Integrität der Zeilen beibehalten, ist wichtig.

War es hilfreich?

Lösung

Verwenden Sie IsMember :

%# find rows in A that are also in B
commonRows = ismember(A,B,'rows');

%# remove those rows
A(commonRows,:) = [];

Andere Tipps

Ich hatte ohne das Sortieren von Daten zwischen zwei Arrays erstellen diff. Ich fand diese gute Option in Matlab docs. Setdiff Funktion

Hier Definition der Funktion [C,ia] = setdiff(___,setOrder) Wenn Sie ‚stabil‘ keine Ausgangsdaten wollen sortiert anders ‚sortiert‘ oder ohne Parameter.

Hier war mein Anwendungsfall.

yDataSent = setdiff(ScopeDataY, yDataBefore, 'stable')
yDataBefore = ScopeDataY;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top