Finding maximum value and it's location from the matrix
586 ビュー (過去 30 日間)
古いコメントを表示
Hi,
This is the matrix I obtained
K =
8 16 -16 -8 -16 16 -20 -40 40
18 2 -6 -18 -2 6 -45 -5 15
12 20 20 -12 -20 -20 -30 -50 -50
-4 -8 8 4 8 -8 0 0 0
-9 -1 3 9 1 -3 0 0 0
-6 -10 -10 6 10 10 0 0 0
-16 -32 32 -8 -16 16 0 0 0
-36 -4 12 -18 -2 6 0 0 0
-24 -40 -40 -12 -20 -20 0 0 0
The question asked me to find the maximum number and it's location using the max function. I did this by using this code:
max_num=max(K(:))
[X Y]=ind2sub(size(K),max_num)
From the code, I got the maximum value off from the matrix, however the location is not right.
max_num =
40
X =
4
Y =
5
The X and Y should have display X = 9 , Y = 1 , instead it displays X = 4 , Y = 5. I don't know what is wrong with my code. It would be great if anyone can help me with this.
Thank you in advance.
0 件のコメント
採用された回答
sixwwwwww
2013 年 12 月 7 日
編集済み: Image Analyst
2021 年 10 月 19 日
Try this:
K = [...
8 16 -16 -8 -16 16 -20 -40 40
18 2 -6 -18 -2 6 -45 -5 15
12 20 20 -12 -20 -20 -30 -50 -50
-4 -8 8 4 8 -8 0 0 0
-9 -1 3 9 1 -3 0 0 0
-6 -10 -10 6 10 10 0 40 0
-16 -32 32 -8 -16 16 0 40 0
-36 -4 12 -18 -2 6 0 0 0
-24 -40 -40 -12 -20 -20 0 0 0]
[row, col] = find(ismember(K, max(K(:))))
3 件のコメント
その他の回答 (3 件)
the cyclist
2013 年 12 月 7 日
You are very close.
Big hints:
In your first line of code,
>> max_num=max(K(:));
you are finding the value , but not the index , of the maximum. If you call max() with two output arguments, then you will also get the index.
>> [max_num,max_idx] = max(K(:));
In your second line of code,
>> [X Y]=ind2sub(size(K),max_num);
you are using a function that converts a linear index to (x,y) coordinates. But you have not put the index into that function; you have put the value into that function.
I think that should get you there.
0 件のコメント
Kan-Hua
2013 年 12 月 7 日
編集済み: Kan-Hua
2013 年 12 月 7 日
I think that's what you need:
[max_num, max_idx]=max(K(:));
[X,Y]=ind2sub(size(K),max_idx);
you need the input parameter of ind2sub to be an index rather than maximum value.
Alternatively, you can do this:
[max_num, max_idx]=max(K(:));
[X,Y]=ind2sub(size(K),find(K==max_num));
1 件のコメント
GS76
2019 年 9 月 26 日
移動済み: Dyuman Joshi
2023 年 11 月 13 日
Thank you Kan-Hua,
This was exactly what I needed to solve my problem, much appreciated.
Stylianos Assimonis
2021 年 10 月 19 日
編集済み: Stylianos Assimonis
2021 年 10 月 19 日
[t1,u1]=max(K);
[t2,u2]=max(t1);
Maximum lies at [u1(u2),u2], i.e.,
K_max = K(u1(u2),u2).
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!