# How do I find the column of maximum values of a maxtrix?

3 views (last 30 days)
Ziq Kimi on 27 Mar 2020
Edited: Akira Agata on 27 Mar 2020
Let's say
x= [4, 90, 85, 75; 2, 55, 65, 75; 3, 78, 82, 79;...
1, 84, 92, 93]
x =
4 90 85 75
2 55 65 75
3 78 82 79
1 84 92 93
If using
[a, b]= max(x)
a will be the maximum values in each columns while b will be their position in terms of rows
I will get
a =
4 90 92 93
b =
1 1 4 4
If using
max(x, [], 'all')
I will get the highest value throughout the columns and rows which is 93.
Now, how do I find the column of the highest value (93) ? Maybe something like
[a, b]= max(x)
but the position/index is in terms of column.

Akira Agata on 27 Mar 2020
Edited: Akira Agata on 27 Mar 2020
If you want to find the column where the maximum value in 2D matrix locates, one simple way is:
[~,col] = max(max(x));
For example:
x= [4, 90, 85, 75; 2, 55, 65, 75; 3, 78, 82, 79;...
1, 84, 92, 93];
[~,col] = max(max(x));
>> col
col =
4

the cyclist on 27 Mar 2020
Here is one way to do it.
[~,linearIndex] = max(x,[],'all','linear'); % First, find the *linear* index of x
[rowIndex,colIndex] = ind2sub(size(x),linearIndex); % Find the row and col indices from the linear index
Note that the first line could also have used the syntax
[~,linearIndex] = max(x(:))