Info

この質問は閉じられています。 編集または回答するには再度開いてください。

Finding max value and its position in ed matrix

1 回表示 (過去 30 日間)
Lucrezia Cester
Lucrezia Cester 2019 年 11 月 27 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
Hello,
I know this question has alreayd been asked a million times, yet I have not managed to solve it by looking at previous documentation.
I have a 3d matrix. I want to find the max value in each "page" (max of 1st and 2nd dimension) along the third dimension. And I also want to know the indeces of the value.
Here is my attempt at the code.
C is my 3d matrix i want to get the max values from.
Cmax = zeros(1,numkx);
row = zeros(1,numkx);
column = zeros(1,numkx);
for c = 1 : numkx
Cpage(:,:,c)= C(:,:,c);
Cmax(:,:,c) = max(Cpage(:));
[row,column] = find(Cpage(:) == Cmax(1,c));
end

回答 (1 件)

Andrei Bobrov
Andrei Bobrov 2019 年 11 月 27 日
編集済み: Andrei Bobrov 2019 年 11 月 27 日
[m,~,k] = size(C);
[C_max_of_page,i] = max(reshape(C,[],k));
index_of_C_max_of_page = [mod(i-1,m)+1; ceil(i/m); (1:k)];
  2 件のコメント
Lucrezia Cester
Lucrezia Cester 2019 年 11 月 27 日
編集済み: Lucrezia Cester 2019 年 11 月 27 日
This seems to give the max values in a increasing order. It basically tells me 1 at position row = x, column = y, then 2 is at position....etc.
I wanted to know the max value of each page of the 3d matrix instead.
Andrei Bobrov
Andrei Bobrov 2019 年 11 月 27 日
編集済み: Andrei Bobrov 2019 年 11 月 27 日
I'm fixed answer.
>> C = randi(120,3,3,3)
C(:,:,1) =
19 46 58
103 23 15
78 52 71
C(:,:,2) =
28 31 32
47 35 99
70 75 118
C(:,:,3) =
88 13 99
42 109 32
71 106 72
>> [m,~,k] = size(C);
[C_max_of_page,i] = max(reshape(C,[],k))
index_of_C_max_of_page = [mod(i-1,m)+1; ceil(i/m); (1:k)]
C_max_of_page =
103 118 109
i =
2 9 5
index_of_C_max_of_page =
2 3 2
1 3 2
1 2 3
>>

この質問は閉じられています。

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by