exclude the maximum value per column

1 view (last 30 days)
pavlos
pavlos on 14 Jan 2017
Edited: Stephen23 on 14 Jan 2017
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

Accepted Answer

Stephen23
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.

More Answers (0)

Categories

Find more on Creating and Concatenating 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!