Ho una matrice con alcuni valori zero che desidero cancellare.Trasforma una matrice in un vettore impilato dove vengono rimossi tutti gli zeri dopo l'ultimo valore diverso da zero per riga
a=[ 1 2 3 0 0; 1 0 1 3 2; 0 1 2 5 0]
>>a =
1 2 3 0 0
1 0 1 3 2
0 1 2 5 0
Tuttavia, desidero cancellare solo quelli dopo l'ultimo valore diverso da zero di ogni riga. Ciò significa che voglio mantenere 1 2 3
dalla prima riga, 1 0 1 3 2
dal secondo e 0 1 2 5
dal terzo.
Desidero quindi memorizzare i valori rimanenti in un vettore. Nel caso dell'esempio questo si tradurrebbe nel vettore
b=[1 2 3 1 0 1 3 2 0 1 2 5]
L'unico modo che ho capito comporta un ciclo for
che vorrei evitare:
b=[];
for ii=1:size(a,1)
l=max(find(a(ii,:)));
b=[b a(ii,1:l)];
end
C'è un modo per vettorizzare questo codice?
Ho modificato il titolo per renderlo più descrittivo per il vostro particolare problema. Rendere il titolo del tuo post "come posso vettorializzare questo codice" non è significativo e non aiuta nessuno. Se qualcun altro viene in questo modo e vede qual è il titolo chi potrebbe avere lo stesso problema, questo sicuramente aiuterà. Ho anche modificato il tuo post per le correzioni generali di grammatica. – rayryeng