find index in a matrix without 'find' function

7 vues (au cours des 30 derniers jours)
Naz khan
Naz khan le 12 Juin 2021
Modifié(e) : Adam Danz le 14 Juin 2021
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;

Réponses (1)

Adam Danz
Adam Danz le 12 Juin 2021
Modifié(e) : Adam Danz le 14 Juin 2021
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.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by