Reduce dimension of a vector

1 回表示 (過去 30 日間)
Salvatore Turino
Salvatore Turino 2012 年 1 月 23 日
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

採用された回答

Salvatore Turino
Salvatore Turino 2012 年 1 月 23 日
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.

その他の回答 (1 件)

Andrew Newell
Andrew Newell 2012 年 1 月 23 日
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)
  1 件のコメント
Salvatore Turino
Salvatore Turino 2012 年 1 月 23 日
it doesn't work. i need to remove the 0.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by