Reduce dimension of a vector

1 visualizzazione (ultimi 30 giorni)
Salvatore Turino
Salvatore Turino il 23 Gen 2012
Hello at the beginning of my code i declare a vector
riga_save=save_rig;
where save_rig is 1x14. after some works on the indices at the end of my code i find this:
riga_save =
2 3 9 10 11 15 0 0 0 0 0 0 0 0
in my code i go to put all zeros in riga_save at the beginning and then i go to replace these zeros with some indices of save_rig...so at the end i find all these 000 given by the oversized, since the vector save_rig is bigger then riga_save. how can i remove the 0 0 0 given by the oversized?
thank you

Risposta accettata

Salvatore Turino
Salvatore Turino il 23 Gen 2012
i've done this:
app_save=riga_save;
clear riga_save
for i=1:length(colonna_save)
riga_save(i)=app_save(i);
end
i want to know if there is something with more efficiency.

Più risposte (1)

Andrew Newell
Andrew Newell il 23 Gen 2012
I would use find inside riga_save to extract the nonzero indices.
It may be more efficient, though, to have save_rig return logical indices (see Logical indexing).
However, to answer the question you actually asked, you can do this:
riga_save = riga_save(riga_save>0);
This is also an example of logical indexing!
(EDITED to correct answer)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by