Return the indices of max value in a possible 4D array
조회 수: 2 (최근 30일)
이전 댓글 표시
I'm trying to get the indices of a max value from a 4 dimension array, that can actually reduce in dimension, so I can display this value and some the value of some other variables at one or more of the same indices. I used something like this:
MAX = find(sx == max(sx(:)));
if MAX/(kk*qq*zz) > 1
rmax = floor(MAX/(kk*qq*zz)) + 1;
MAX = MAX - (kk*qq*zz) * (rmax - 1);
else
if length(theta) == 1
rmax = 0;
rmax = 1;
end
if MAX/(kk*qq) > 1
zmax = floor(MAX/(kk*qq)) + 1;
MAX = MAX - (kk*qq) * (zmax - 1);
else
zmax = 1;
end
if MAX/kk > 1
qmax = floor(MAX/kk) + 1;
MAX = MAX - (kk) * (qmax - 1);
else
qmax = 1;
end
kmax = MAX;
smax = sx(kmax, qmax, zmax, rmax);
but if the array size changes it still wants to output smax as a 4 dimensional array except its not so I get an error.
Is there any function in Matlab for getting these indices?
댓글 수: 0
채택된 답변
Andrew Newell
2015년 2월 20일
편집: Andrew Newell
2015년 2월 20일
If you don't know in advance the size of the array, you can create a cell array for the indices with as many elements as there are dimensions:
[MAX,I] = max(sx(:));
dims = size(sx);
smax = cell(size(dims));
[smax{:}] = ind2sub(dims,I);
댓글 수: 3
추가 답변 (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!