exclude the maximum value per column

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

 採用された回答

Stephen23
Stephen23 2017 年 1 月 14 日
編集済み: Stephen23 2017 年 1 月 14 日

1 投票

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 件)

カテゴリ

ヘルプ センター および File ExchangeCreating and Concatenating Matrices についてさらに検索

質問済み:

2017 年 1 月 14 日

編集済み:

2017 年 1 月 14 日

Community Treasure Hunt

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

Start Hunting!

Translated by