How to find the descending index in each row of a matrix?

2 Ansichten (letzte 30 Tage)
Marmar
Marmar am 26 Feb. 2018
Kommentiert: Marmar am 26 Feb. 2018
Hi there, I have data for about 2000 lakes through 11 days so I have a 2000x11 matrix. which I want to know for each lake (row) when the numbers become descending. Lets say my matrix is A ( it shows the first four rows of my matrix) and A is:
[26 26 25 25 25 25 25 25 25 6 3;
558 558 558 558 533 521 494 367 367 64 8;
214 212 210 210 182 156 106 73 73 41 9;
448 448 445 445 375 219 132 130 130 73 32]
Finally I want an index vector (2000x1) that shows me the index of the descending point for each row. Means I want my result for the example matrix A to be like matrix below:
3
5
2
3
Any idea is really appreciated.
  3 Kommentare
jonas
jonas am 26 Feb. 2018
Bearbeitet: jonas am 26 Feb. 2018
Not the most elegant solution but it gets the job done:
[nrow ncol]=size(A)
B=diff(A');
[row col]=find(B<0)
for i=1:nrow
ind(i)=row(min(find(col==i)))+1
end
Marmar
Marmar am 26 Feb. 2018
This solution works as well. Thank you.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

James Tursa
James Tursa am 26 Feb. 2018
E.g., assuming there is always a decrease:
[~,x] = max(diff(A,1,2)<0,[],2);
result = x + 1;
If there is not a decrease, what would you want the code to produce?
  2 Kommentare
Marmar
Marmar am 26 Feb. 2018
I want 1 for those row, but there is always a decrease.
Marmar
Marmar am 26 Feb. 2018
That works well. Thank you so much.

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