Extracting and sorting data in a column
Show older comments
Hi For example I have a 19 x1 colunmn called Mx and I need to find the maximum value in every 2 rows till the end of the column.
Mx
20
22
23
21
34
54
23
14
67
56
34
32
21
12
43
23
56
34
32
2 Comments
Alex Mcaulley
on 8 Aug 2019
Can you show the expected result in your example?
Olu B
on 8 Aug 2019
Answers (2)
madhan ravi
on 8 Aug 2019
Edited: madhan ravi
on 8 Aug 2019
Works for odd as well as even number of elements:
NewMx = max(reshape([Mx(:);...
-Inf(mod(numel(Mx),2))],2,[])) % thank you Guillaume
7 Comments
Jos (10584)
on 8 Aug 2019
nice, but only works when the number of elements in Mx is even
madhan ravi
on 8 Aug 2019
Edited: madhan ravi
on 8 Aug 2019
Hä? Jos did you even try the solution before claiming??
>> Mx = 1:11
Mx =
1 2 3 4 5 6 7 8 9 10 11
>> NewMx = max(reshape([Mx(:);...
zeros(mod(numel(Mx),2))],2,[]))
NewMx =
2 4 6 8 10 11
>>
Guillaume
on 8 Aug 2019
Since we're looking at the max, I'd recommend padding with -Inf rather than 0:
NewMx = max(reshape([Mx(:); -Inf(mod(numel(Mx),2), 1)],2,[]))
madhan ravi
on 8 Aug 2019
Thank you Guillame :)
Guillaume
on 8 Aug 2019
By the way, the mod expression should be:
mod(-numel(Mx), groupsize) %note the -
When groupsize is 2, - or + give the same result. For larger groupsize it's critical.
But the idea is there, when you want to group consecutive elements of a vector, the solution is to reshape the vector so that each group is row/column.The idea extends to higher dimensions as well. If you want to calculate something for every 3 consecutive columns of a matrix, reshape the matrix to 3D to have 3 columns and ncolumns/3 pages.
Jos (10584)
on 8 Aug 2019
My apologies Madhan!
madhan ravi
on 8 Aug 2019
No problem Jos :)
Jos (10584)
on 8 Aug 2019
This works for both an even or an odd number of elements:
N = 11 ; % odd
Mx = randi(10, N, 1)
M2 = accumarray(ceil((1:numel(Mx))/2).', Mx, [], @max)
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!