Suche MATLAB-Funktion wie retainAll()

Tim69

Cadet 3rd Year
Registriert
Nov. 2008
Beiträge
43
Hi all,

ich bin gerade auf der Suche nach einer MATLAB-Funktion, die folgendes tut:

Vektor A enthält eine Menge von Zahlen (z.B. [1 3 4 8 9])
Vektor B enthält ebenso eine Menge von Zahlen (z.B. [2 3 4 6 7])

Jetzt hätte ich gerne einen Vektor C, der alle Zahlen aus B enthält, die auch in A vorkommen (im Beispiel [3 4]).

Gibt es dafür eine fertige Funktion oder muss ich mir das selber bauen?

Wäre toll wenn mir da jemand helfen könnte!

Viele Grüße
Tim69
 
ist das nicht einfache eine UND Verknüpfung aus der Mengenlehre? denke das sollte auch bei Matlab so funktionieren.
 
x = ismember(A,B); --> ismember sucht die Positionen in Vektor A, die auch in B vorkommen.
y = A(x);
 
Guten Morgen

Für x,y Vektoren (nicht notwendigerweise der selben Länge) verwende z=intersect(x,y).
 
ismember ist toll!

Das löst mein Problem schnell und gut. Vielen Dank Nasenbär

Edit: intersect ist ja sogar noch besser. Vielen Dank auch an dOM89DoM!
 
Stimmt, intersect geht auch. Ist meines erachtens aber langsamer, da die zahlen auch noch der größe nach sortiert werden Bei großen Vektoren macht sich das schon bemerkbar.
Ist halt die Frage ob Sortierung gewollt, Laufzeit kritisch bzw. wie gross die Vektoren sind.
 
Zuletzt bearbeitet:
Auf die Laufzeit kommt es mir in diesem Fall nicht an. Intersect verursacht im Moment auch keine spürbaren Wartezeiten, von daher bin ich wunschlos glücklich (für den Moment :freaky:). Sortierung wäre eigentlich egal.
 
Zurück
Oben