Filter löschen
Filter löschen

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

3 Ansichten (letzte 30 Tage)
ali eskandari
ali eskandari am 2 Sep. 2021
Bearbeitet: Matt J am 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 Kommentar
Matt J
Matt J am 2 Sep. 2021
Bearbeitet: Matt J am 2 Sep. 2021
I wonder why you wouldn't simply use a sparse binarymatrix:
H=sparse(A>2);

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by