Ich habe zwei Vektoren 1x5000. Sie bestehen aus Zahlen wie folgt aus:Elementweise Vergleich von zwei Vektoren unter Ignorieren aller NaNs zwischen
vec1 = [NaN NaN 2 NaN NaN NaN 5 NaN 8 NaN NaN 7 NaN 5 NaN 3 NaN 4]
vec2 = [NaN 2 NaN NaN 5 NaN NaN NaN 8 NaN 1 NaN NaN NaN 5 NaN NaN NaN]
Ich möchte, wenn die Reihenfolge der Zahlen überprüfen, gleich sind, unabhängig von den NaN
s. Aber ich möchte nicht die NaN
s (Not-a-Number) entfernen, da ich sie später verwenden werde. Jetzt erstelle ich einen neuen Vektor und nenne ihn results
. Sobald sie in der gleichen Reihenfolge kommen, ist es korrekt und wir füllen results
mit 1
. Wenn die nächsten Zahlen nicht gleich sind, fügen wir 0
zu results
hinzu.
Ein Beispiel results
, wie dies für vec1
und vec2
aussehen: [1 1 1 0 1 0 0]
Die ersten drei Zahlen gleich sind, dann wird 7 im Vergleich zu 1, die 0 ergibt, dann 5 im Vergleich zu 5 gilt, die 1 gibt . Dann werden die letzten beiden Zahlen fehlen, die 0.
ein Grund gibt, dass ich will nicht die NaN
s entfernen, ist, dass ich eine Zeitvektor 1x500 haben und irgendwie möchte ich die Zeit für jeweils 1 und 0 erhalten (in einem neuen Vektor). Ist das auch möglich?
Hilfe ist super geschätzt!
Dies scheint perfekt zu funktionieren, danke! Nur eine Frage, ich habe einen Vektor time1 und time2. Könnte ich für jede 1 und 0 die Zeit von vec1 und vec2 rausholen? Der Zeitvektor hat die gleiche Länge. –
Ich gehe davon aus, dass 'time1' ein Vektor von Zeiten ist, wobei jedes Element einem Element in' vec1' entspricht. Dann können Sie alle Zeiten des 'NaN'-freien' vec1' auf diese Weise haben: 'newtime1 = time1 (id1);' – erfan
Korrekt bezüglich des Zeitvektors, ich möchte automatisch die Zeit für jede 1 und 0 der vec1 und vec2. Kann das gemacht werden? –