Odd output from ind2sub

조회 수: 4 (최근 30일)
Kate
Kate 2014년 7월 23일
댓글: Kate 2014년 7월 23일
I'm trying to spit out indices for max values in a large matrix at a specific point in time (in this case obs 1560, t(:, :, 1560))
>> [I J]=ind2sub(size(t), (max(max(t(:, :, 1560)))))
But my I is equal to the actual value in the cell, not the row
I =
28.5048
And J makes no sense:
J =
1
Is the error in my code obvious to anyone? Thanks,

채택된 답변

Andrei Bobrov
Andrei Bobrov 2014년 7월 23일
편집: Andrei Bobrov 2014년 7월 23일
s = size(t);
[val,ij] = max(reshape(t(:, :, 1560),[],1);
[ii,jj] = ind2sub(s(1:2),ij);
idxs = [ii,jj,1560];
or
ind = prod(s(1:2))*1559 + ij;
  댓글 수: 1
Kate
Kate 2014년 7월 23일
Thanks Andrei, reshape was the addition that I needed.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

dpb
dpb 2014년 7월 23일
(max(max(t(:, :, 1560))))
is a single value for the maximum of the values of the requested plane. Thus there isn't any actual location to be converted from being returned.
If you write
[i,j]=ind2sub(size(t), find(max(max(t(:, :, 1560)))))
instead, you'll always get [1,1] because the result of the double max() operation is scalar.

카테고리

Help CenterFile Exchange에서 MATLAB에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by