max value in each row with its index

13 次查看(过去 30 天)
hi , i have the below matrix , and i want to find the maximun value with its location(index)at each row w, so after finding the maximum value of each row then i will find maximum of maximums of these values and save it in another matirx with the same location(index) and all other values are zeros
inputmatrix= 8.0000 0 7.3398 0 8.0000
1.6635 0.7103 3.2000 3.2000 3.2000
3.2953 3.2000 3.2000 3.2000 3.2000
16.0000 16.0000 16.0000 10.8963 7.6226
8.2107 8.0000 0 5.3333 5.3333
0 3.2000 1.1829 3.2000 3.2000
8.0000 4.9461 0 14.2047 8.0000
1.4528 16.0000 16.0000 16.0000 3.3661
8.0000 8.0000 4.0000 4.0000 4.0000
0 2.5510 3.0116 2.6667 2.6667

回答(2 个)

Davide Masiello
Davide Masiello 2022-6-7
编辑:Davide Masiello 2022-6-7
inputmatrix= [8.0000 0 7.3398 0 8.0000;...
1.6635 0.7103 3.2000 3.2000 3.2000;...
3.2953 3.2000 3.2000 3.2000 3.2000;...
16.0000 16.0000 16.0000 10.8963 7.6226;...
8.2107 8.0000 0 5.3333 5.3333;...
0 3.2000 1.1829 3.2000 3.2000;...
8.0000 4.9461 0 14.2047 8.0000;...
1.4528 16.0000 16.0000 16.0000 3.3661;...
8.0000 8.0000 4.0000 4.0000 4.0000;...
0 2.5510 3.0116 2.6667 2.6667];
To find the maximum of each row and their indexes
[row_max,col_idx] = max(inputmatrix,[],2)
row_max = 10×1
8.0000 3.2000 3.2953 16.0000 8.2107 3.2000 14.2047 16.0000 8.0000 3.0116
col_idx = 10×1
1 3 1 1 1 2 4 2 1 3
I am not sure what you wanna do in the next step though.
  4 个评论
kurdistan mohsin
kurdistan mohsin 2022-6-7
thank you! , how can i index each value with its row and coumn index ?
Jan
Jan 2022-6-7
index = sub2ind(size(inputmatrix), col_idx.', 1:5);
inputmatrix(index) % same values as row_max

请先登录,再进行评论。


Steven Lord
Steven Lord 2022-6-7
Do you actually need or want the locations of the maximum element in each row or is that just a temporary step towards your ultimate goal of identifying the largest value in the whole matrix? If the latter, consider an alternate approach. Let's take some sample data.
A = randi([-10 10], 5)
A = 5×5
-4 -6 10 -5 -2 -10 -2 6 1 0 -3 -7 3 1 9 -5 -7 4 -9 -1 -5 -4 -6 7 -2
Determine the maximum value in the array (stored as value) and its linear index (stored as location.) Using the 'linear' option requires release R2019a or later.
[value, location] = max(A, [], 'all', 'linear')
value = 10
location = 11
Create an all zero array the same size as A.
B = zeros(size(A));
Set the element in B corresponding to the location of the maximum value in A to that maximum value.
B(location) = value
B = 5×5
0 0 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
  1 个评论
kurdistan mohsin
kurdistan mohsin 2022-6-8
编辑:kurdistan mohsin 2022-6-8
this is a great solution , but what if the location was indicated as it's row and cloumn indexing ,like in your example i want to give me the location as ; [1,3] , is it possible?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by