2010-04-14 2 views
10

저는 MATLAB에서 4D 측정 값 배열을 가지고 있습니다. 각 차원은 측정에 대한 다른 매개 변수를 나타냅니다. 나는 각각의 최대 및 최소값과 색인 (즉, 어떤 매개 변수)을 찾고 싶다.MATLAB에서 다차원 행렬의 최대 또는 최소를 어떻게 찾을 수 있습니까?

가장 좋은 방법은 무엇입니까? 나는 각 차원에서 최대의 최대 값을 취할 수 있다고 생각하지만, 그것은 마치 진흙처럼 보인다.

+0

명시 적 질문이 표시된 속임수에서 답변되었지만 여기에있는 모든 대답이 제목의 질문에 대답하고 있습니다. 이 두 가지 매우 다른 시나리오이며 중복 깃발에 동의하지 않습니다. – excaza

답변

34

빠른 예 :

%# random 4 d array with different size in each dim 
A = rand([3,3,3,5]); 

%# finds the max of A and its position, when A is viewed as a 1D array 
[max_val, position] = max(A(:)); 

%#transform the index in the 1D view to 4 indices, given the size of A 
[i,j,k,l] = ind2sub(size(A),position); 

최소 찾기는 운동 :)로 남아 있습니다.

코멘트 다음은 당신이 당신의 배열 A의 크기의 번호를 모르는 따라서 "[i,j,k,l] ="부분을 쓸 수없는 경우,이 트릭을 사용 : 두 차원 배열에 대한

indices = cell(1,length(size(A))); 

[indices{:}] = ind2sub(size(A),position); 
+0

이것은 Matlab 방식입니다. 절대 최대치를 찾고 싶다면 sign에 관심이있을 경우'max (abs (A (:))'를 사용하고'sign (A (position)) '을 곱하면된다. – Jonas

+0

좋은 해결책 어떤 루프도없는 Matlab 방식 – martiert

+0

A의 크기를 모르는 경우 최대 위치 인덱스를 벡터로 얻을 수 있습니까? 예 : – yuk

0

을, 내가 말 min/max 함수를 두 번 사용할 수 있습니다. n 차원 배열의 경우 n 번. 예를 들면 : a=[2 3 4; 5 6 7; -2 7 87; 911 7 34];

for minimum: min(min(a,[],1)) 
      -> the answer will be -2. 

당신은뿐만 아니라 2 최소/최대의 치수 매개 변수를 넣을 수 있습니다. 이것은 함수를 두 번 호출하기 때문에 u가 선택한 최소/최대 요소 벡터에서 두 번째입니다.

마찬가지로, 최대를 찾으려면 (max(max(a,[],1))을 수행 할 수 있습니다.

관련 문제