Effacer les filtres
Effacer les filtres

how to scan a matrix row by row and save index of elements

3 vues (au cours des 30 derniers jours)
ali eskandari
ali eskandari le 2 Sep 2021
Modifié(e) : Matt J le 2 Sep 2021
A =
1 2 3 4
0.5 5 6 2
5 3 1 3
I have a matrix-like A, and my aim is to scan the matrix row by row and save the index of values that is greater than 2 (or any threshold). In fact, I want to have an array like this:
H = {[3,4];[2,3];[1,2,4]}
I tried to do it like below but I don't know how I can append an elemnt to the end of array H.
If you can suggest anything faster way, I would appreciate it.
for i = 1:width(A)
H{i} = [];
for j = 1:height(A)
if A(i,j) > 2
H{i} = % how to indicate the index of the matxis that is true for the if condition
end
end
end
  1 commentaire
Matt J
Matt J le 2 Sep 2021
Modifié(e) : Matt J le 2 Sep 2021
I wonder why you wouldn't simply use a sparse binarymatrix:
H=sparse(A>2);

Connectez-vous pour commenter.

Réponse acceptée

Matt J
Matt J le 2 Sep 2021
Modifié(e) : Matt J le 2 Sep 2021
A = [1 2 3 4
0.5 5 6 2
5 3 1 3] ;
[I,J]=find(A>2);
H=accumarray(I,J,[],@(x){x.'});
H{:}
ans = 1×2
3 4
ans = 1×2
2 3
ans = 1×3
1 2 4
  2 commentaires
ali eskandari
ali eskandari le 2 Sep 2021
Thank you @Matt J but this will return the values not the index of each.
Matt J
Matt J le 2 Sep 2021
Modifié(e) : Matt J le 2 Sep 2021
But I demonstrated it for you on your example!

Connectez-vous pour commenter.

Plus de réponses (0)

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