How do I get the maximum numbers of every "increasing pattern" in each row in a matrix?
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Linjun He
am 27 Dez. 2018
Kommentiert: Linjun He
am 29 Dez. 2018
Here is a matrix A consisting of "increasing patterns".
A=[1,2,3,1,2,3,4,1,2,1,2,3,4,1,1;1,2,1,1,2,3,1,2,3,4,1,2,3,4,5]
In each row of matrix A, all "increasing patterns" begin with 1.
Visually, all "patterns" are underlined separately below. The largest numbers in all "patterns" are in bold.
A =
1 2 3 1 2 3 4 1 2 1 2 3 4 1 1
1 2 1 1 2 3 1 2 3 4 1 2 3 4 5
How do I get B? This is, get the maximum numbers of all "patterns" in each row.
B=3 4 2 4 1 1
2 1 3 4 5 0
% use zero to fuilfill matrix B to make dimensions of each row consistent
0 Kommentare
Akzeptierte Antwort
Stephen23
am 27 Dez. 2018
>> A = [1,2,3,1,2,3,4,1,2,1,2,3,4,1,1;1,2,1,1,2,3,1,2,3,4,1,2,3,4,5]
A =
1 2 3 1 2 3 4 1 2 1 2 3 4 1 1
1 2 1 1 2 3 1 2 3 4 1 2 3 4 5
>> X = diff(A,1,2)~=1;
>> X(:,end+1) = true;
>> B = A.*X
B =
0 0 3 0 0 0 4 0 2 0 0 0 4 1 1
0 2 1 0 0 3 0 0 0 4 0 0 0 0 5
3 Kommentare
Weitere Antworten (1)
Linjun He
am 27 Dez. 2018
Bearbeitet: Linjun He
am 27 Dez. 2018
2 Kommentare
madhan ravi
am 27 Dez. 2018
but in the orginal question your desired output is different right I mean 5 was padded with 0 at the end??
Siehe auch
Kategorien
Mehr zu Logical 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!