2010-12-11 3 views
2

Ich habe zwei Zellenarrays der Zeichenfolgen A und B, die 60 und 400 Subjektnamen jeweils enthalten. Alle Objekte in dem Zellenfeld A sind ebenfalls in dem Zellenfeld B. Was ich tun möchte, ist die im Zell-Array A aufgelisteten Objekte aus dem Zellen-Array B zu löschen, um zum Zellen-Array C zu gelangen, das nur die Subjekte enthält, mit denen ich arbeiten möchte.MATLAB: Wie löscht man Elemente des Zellenfeldes A aus Zellenfeld B?

Antwort

7

Wenn Sie über das Ergebnis ist egal, die sortiert werden, können Sie die Funktion SETDIFF verwenden können:

C = setdiff(B, A); 

Wenn Sie das Ergebnis müssen in der gleichen Reihenfolge wie die ursprüngliche Zellenfeld B mit den Namen von A

C = B(~ismember(B, A)); 

UPDATE: In neueren Versionen von MATLAB, ein zusätzliches Argument hinzugefügt wurde entfernt, können Sie die Funktion ISMEMBER verwenden SETDIFF, um die Sortierung der Ausgabeelemente zu steuern. Um die ursprüngliche Reihenfolge zu erhalten, können Sie dies jetzt tun:

C = setdiff(B, A, 'stable'); 
+0

danke Mann für die schnelle Hilfe. – Mike

+0

Große Antwort wie immer, ich wusste nicht über die Setdiff-Funktion. Mike - wie Sie es eindeutig mögen, können Sie auf den Pfeil nach oben neben der Antwort klicken und auf das Kontrollkästchen darunter klicken. Dies ist eine formelle Art, dem Beantworter "Danke" zu sagen. –

Verwandte Themen