exclude the maximum value per column
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
pavlos
el 14 de En. de 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
0 comentarios
Respuesta aceptada
Stephen23
el 14 de En. de 2017
Editada: Stephen23
el 14 de En. de 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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!