find index in a matrix without 'find' function

10 ビュー (過去 30 日間)
Naz khan
Naz khan 2021 年 6 月 12 日
編集済み: Adam Danz 2021 年 6 月 14 日
I have an array of 1000+ samples. I want to find the index of nonzero elements in a large matrix in a shortest possible time. Whats the best way to get the list of indexing without using "find" funcion?
Example
p=[0 0 .34 0; 3 0 0 3; 0 9 0 0];
v=nonzeros(p)
for i=1:length(v)
[r,t]=find(p==v(i))
sds{i}=[r,t];
end;

回答 (1 件)

Adam Danz
Adam Danz 2021 年 6 月 12 日
編集済み: Adam Danz 2021 年 6 月 14 日
find() is the quickest way to return the subscript indices of non-zero elements of a matrix but it's quicker to do so without using a loop. Is there a reason you can't use find?
p=[0 0 .34 0; 3 0 0 3; 0 9 0 0];
[rows, cols] = find(p~=0)
rows = 4×1
2 3 1 2
cols = 4×1
1 2 3 4
So, sds{i} is the same as [rows(i), cols(i)] but without repeats of the same value.

カテゴリ

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