ich zwei Vektoren haben, die die „Start“ und „Ende“ Stellen (wie Logicals), die ich als kombinieren möchten halten einen dritten Vektor zu erstellen, Final
:erstellen Vector im Bereich von Variablen
Starts = [0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0];
Ends = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0];
Mit dem Endvektors suchen wie folgt aus:
Final = [0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0];
Derzeit ich dies mit einem for
Schleife erreichen können wie folgt:
Start_Locations = find(Starts);
End_Locations = find(Ends);
Final = zeros(20,1);
for x=1:length(Start_Locations)
Final(Start_Locations(x):End_Locations(x),1) = 1;
end
Ich frage mich, ob es eine Möglichkeit gibt, die gleiche genaue Sache ohne eine for
Schleife zu erreichen. Zum Beispiel könnte ich erreichen, was ich oben skizzierte mit dem folgenden „hart codiert“ statement:
Final([4:8,11:19],1) = 1;
Insbesondere ist es eine Möglichkeit, die Start_Locations
und End_Locations
Vektoren in einer Art und Weise so zu kombinieren, dass ich einen einzelnen haben könnte Aussage wie:
Final(Combined_Start_and_End_Locations,1) = 1;
zu erreichen, was ich mit der for
Schleife tat oben? Ich versuche zu lernen, zu vermeiden, for
Schleifen so viel wie ich kann und würde wirklich jede Lösung zu schätzen, die den Final
Vektor wie oben beschrieben erstellt, ohne auf eine Schleife zurückgreifen.
In diesem Fall gibt diese Lösung "[0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]" zurück, was mir richtig erscheint. – Trogdor
Ja, du hast Recht, ich habe etwas anderes gedacht, denke ich! +1 – Divakar
Puh, du hast mich für eine Minute besorgt ... danke – Trogdor