ho due vettori che contengono le "start" e le posizioni "finali" (come Logicals) che desidero di coniugare da creare un terzo vettore, Final
:Crea Vector varia da variabili
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];
Con il finale Vector simile a questo:
Final = [0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0];
Attualmente, posso raggiungere questo obiettivo utilizzando un ciclo for
come segue:
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
Mi chiedevo se c'è un modo per realizzare la stessa identica cosa senza un ciclo for
. Ad esempio, ho potuto compiere ciò che ho descritto sopra con la seguente affermazione "hard-coded":
Final([4:8,11:19],1) = 1;
particolare, c'è un modo per combinare i Start_Locations
e End_Locations
vettori in un modo tale da poter disporre di un unico dichiarazione come:
Final(Combined_Start_and_End_Locations,1) = 1;
per realizzare quello che ho fatto con la for
ciclo precedente? Sto cercando di imparare a evitare i loop di for
il più possibile e apprezzerei davvero qualsiasi soluzione che crea il vettore Final
come descritto sopra senza ricorrere a un ciclo.
In tal caso questa soluzione restituisce '[0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1]' che mi sembra corretto. – Trogdor
Sì, hai ragione, stavo pensando a qualcos'altro, credo! +1 – Divakar
Wow, mi hai fatto preoccupare per un minuto ... grazie – Trogdor