exclude the maximum value per column

2 vues (au cours des 30 derniers jours)
pavlos
pavlos le 14 Jan 2017
Modifié(e) : Stephen23 le 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

Réponse acceptée

Stephen23
Stephen23 le 14 Jan 2017
Modifié(e) : Stephen23 le 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.

Plus de réponses (0)

Catégories

En savoir plus sur Creating and Concatenating Matrices dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by