2016-08-23 2 views
1

Ich versuche, zwei Vektoren unterschiedlicher Größe zu vergleichen. Zum Beispiel, wenn ich den Code ausführen:Vergleichen von Vektoren unterschiedlicher Länge

A = [1 4 3 7 9]; 
B = [1 2 3 4 5 6 7 8 9]; 

myPadded = [A zeros(1,4)]; 

C = ismember(myPadded,B) 

ich folgende Ausgabe:

C = 1 1 1 1 1 0 0 0 0 

Allerdings möchte ich eine Ausgabe, die die Positionen der verglichenen Werte widerspiegeln, daher würde Ich mag einen Ausgang, der wie folgt angezeigt:

C = 1 0 1 1 0 0 1 0 1 

Bitte, ich brauche etwas Hilfe :)

Antwort

6

Es gibt 2 Punkte. Zuerst schreiben Sie die Eingänge ismember in der falschen Reihenfolge. Darüber hinaus müssen Sie Ihre Matrix nicht vergrößern. Versuchen Sie einfach ismember(B, A) und Sie erhalten, was Sie erwarten.

5

Die Funktion ismember(myPadded, B) einen Vektor, der die gleiche Größe von myPadded zurückgibt, der angibt, ob das i-te Element von myPadded in B. vorhanden ist

Zu bekommen, was Sie wollen, nur Parametrierauftrag invertieren: ismember(B, myPadded).

+0

Jemand hat hier einen schrecklichen Fehler gemacht. Dies ist völlig umgekehrt intuitiv. Eiscreme an alle, die diesen Vergleich nie rückgängig gemacht haben :) – patrik

+0

Das spüre ich besonders nicht. Eher willkürlich. Wie auch immer, es ist so einfach wie "help ismember" in der Konsole zu schreiben :-) – dunadar

+1

Ich wollte kommentieren, dass du nur 'ismember (B, A)' brauchst, aber @erfan hat ihre Antwort gepostet. – user1543042

0

Ein schneller Weg, dies zu tun, ist die logische Indizierung. Dies funktioniert nur, wenn die letzte Ziffer von B in A enthalten ist.

A = [1 4 3 7 9]; 
c(A) = 1; % or true. 

Eine hier davon ausgegangen, dass Sie einen Vektor 1 bis Subindex wollen: N, so dass B immer B = 1:N ist. Falls die letzte Ziffer nicht eins ist, ist dies leicht zu beheben. Denken Sie daran, dass Sie alle in den vorherigen Zustand zurückversetzen, nachdem Sie fertig sind. Es wird jedoch 2 Reihen extra sein.

Diese Lösung ist als Spezialfall gedacht, der an einem sehr häufigen Problem arbeitet.

Verwandte Themen