Azzera filtri
Azzera filtri

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

3 visualizzazioni (ultimi 30 giorni)
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 Commento
Matt J
Matt J il 2 Set 2021
Modificato: Matt J il 2 Set 2021
I wonder why you wouldn't simply use a sparse binarymatrix:
H=sparse(A>2);

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 2 Set 2021
Modificato: Matt J il 2 Set 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 Commenti
ali eskandari
ali eskandari il 2 Set 2021
Thank you @Matt J but this will return the values not the index of each.
Matt J
Matt J il 2 Set 2021
Modificato: Matt J il 2 Set 2021
But I demonstrated it for you on your example!

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by