Wie kann ich ohne Sortierung in MATLAB den Schnittpunkt der Mengen A und B von A löschen?
-
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.
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