exclude the maximum value per column
2 views (last 30 days)
Show older comments
Hello,
Consider a matrix 365 x 24.
How can I exclude the maximum value per column?
The final matrix will be 365 x 23 and not contain the maximum value per row.
Thanks.
Pavlos
0 Comments
Accepted Answer
Stephen23
on 14 Jan 2017
Edited: Stephen23
on 14 Jan 2017
This will remove the first maximum value from each row:
>> M = randi(9,6,9)
M =
3 9 1 1 1 1 5 2 3
9 5 2 4 6 3 8 6 4
3 1 5 8 3 2 7 8 9
5 6 7 2 1 4 2 9 1
2 7 3 9 4 2 4 7 8
4 4 2 2 5 9 8 5 1
>> R = M.';
>> [~,row] = max(R,[],1);
>> col = 1:size(R,2);
>> idx = sub2ind(size(R),row,col);
>> N = R(setdiff(1:numel(R),idx));
>> N = reshape(N,[],size(R,2)).'
N =
3 1 1 1 1 5 2 3
5 2 4 6 3 8 6 4
3 1 5 8 3 2 7 8
5 6 7 2 1 4 2 1
2 7 3 4 2 4 7 8
4 4 2 2 5 8 5 1
The trick is to remember that MATLAB operates along columns first, so transposing the matrix at the start makes this whole task easier.
0 Comments
More Answers (0)
See Also
Categories
Find more on Logical 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!