2011-11-08 6 views
4

나는 MATLAB을 사용하여 숫자 벡터 인 local maxima을 찾으려고합니다. 내장 findpeaks 기능은 같은 벡터를 위해 작동합니다MATLAB을 사용하여 벡터에서 최대 값 찾기

: 피크합니다 ( 3 년대의 각)에만 벡터에서 한 위치를 차지

[0 1 2 3 2 1 1 2 3 2 1 0] 

,하지만 난 같은 벡터가있는 경우

[0 1 2 3 3 2 1 1 2 3 2 1 0] 

첫 번째 '피크'는 벡터의 두 위치를 차지하며 기능은 선택하지 않습니다.

이러한 종류의 피크를 감지 할 수있는 최대 값 찾기 기능을 작성하는 좋은 방법이 있습니까?

답변

3

당신은 이미지 처리 도구 상자에서 REGIONALMAX 기능을 사용할 수 있습니다 :

>> x = [0 1 2 3 3 2 1 1 2 3 2 1 0] 
x = 
    0  1  2  3  3  2  1  1  2  3  2  1  0 

>> idx = imregionalmax(x) 
idx = 
    0  0  0  1  1  0  0  0  0  1  0  0  0 
+0

에 대해 작동하지 않습니다. 내가 감사를 써서 끝낸거야. 그 결과를 bwmorph로 축소하여 각 피크에 대해 하나의 결과를 얻습니다. – kazimpal

-1
a = [ 0 1 2 3 3 2 1 2 3 2 1 ]; 

sizeA = length(a); 

result = max(a); 

for i=1:sizeA, 

    if a(i) == result(1) 
     result(length(result) + 1) = i; 
    end 
end 

에는 max가 있고 그 다음에 max와 동일한 모든 값 위치가옵니다. 훨씬 쉽게

+0

-1 같은 일이하지 않습니다 로컬 맥시마 – Amro

-1

뭔가 :

a = [1 2 4 5 5 3 2]; 
b = find(a == max(a(:))); 

출력 :

b = [4,5] 
+0

-1에 대해 작업하면 로컬 최대 값 – Amro

관련 문제