2010-12-07 2 views
3

주기적인 동작을 나타내는 데이터가 있습니다. 그래서, 그것은 높은 곳에서 낮은 곳으로 되돌아갑니다. 음모를 꾸미려면 사인파가 필요합니다. 그러나 진폭은 매 사이클마다 약간 다릅니다. 전체 시퀀스에서 최대 및 최소 각각의 목록을 만들고 싶습니다. 10 사이클이 완료되면 20 개의 숫자, 10 개의 양수 (상위) 및 10 개의 음수 (낮은)로 끝납니다. 그것은이처럼 보인다일련의 주기적 데이터에서 높은 값과 낮은 값을 어떻게 결정합니까?

는 시계열 분석을위한 일이다, 그러나 나는 확실히 알 수있을만큼 통계에 익숙하지 않다.

나는 파이썬에서 일하고 있어요.

은 아무도까지 코드 라이브러리 및 용어 가능한 한 나에게 몇 가지 지침을 줄 수 있습니까?

+0

내 대답을 삭제했습니다. 나는 뭔가를 놓친다는 것을 알았다. 정현파의 모든 봉우리와 골짜기가 필요합니다. – pyfunc

+1

@pyfunc 너와 같은 이름으로 너 그리워 ~~- – mjv

답변

1

당신은 아마 인기 파이썬 과학/통계 라이브러리의 일부를 숙지해야합니다. 질책이 떠오른다.

그리고 here의 당신이 NumPy와를 사용하여 원하는 일을하는 방법을 논의 SciPy 메일 링리스트에서 항목을 선택합니다.

+1

내가 '파이'라고 말 했니? – marr75

+4

충분한 파이가 없습니다. –

+0

나는 항상 파이를위한 공간이있다. – martineau

0

이것은 당신이이 같은 당신이 원하는 일을해야 라이브러리를 사용하지 않은 경우 지나치게 복잡한 문제는 없습니다. 근본적으로 데이터를 반복하면서 오름차순에서 내림차순으로 가면 내림차순에서 내림차순에서 오름차순으로 낮아집니다.

def get_highs_and_lows(data): 
    prev = data[0] 
    high = [] 
    low = [] 
    asc = None 
    for value in data[1:]: 
     if not asc and value > prev: 
      asc = True 
      low.append(prev) 
     elif (asc is None or asc) and value < prev: 
      asc = False 
      high.append(prev) 
     prev = value 
    if asc: 
     high.append(data[-1]) 
    else: 
     low.append(data[-1]) 
    return (high, low) 

>>> data = [0, 1, 2, 1, 0, -2, 0, 2, 4, 2, 6, 8, 4, 0, 2, 4] 
>>> print str(get_highs_and_lows(data)) 
([2, 4, 8, 4], [0, -2, 2, 0]) 
+0

반드시 그렇지는 않습니다. 통계 및 과학적 측정에서 "순간 속도가 양수에서 음수로 바뀔 때마다"보다 더 조심스럽게 국소 최대 값과 최소값을 정의하려고합니다. 대부분의 측정에서 노이즈가 발생하기 때문입니다. – marr75

0

x는 데이터의 목록입니다, 당신은, T을주기 길이를 알고 일 경우이 시도 :이 작업에 관계없이 위상의 오프셋 (offset)해야

# Create 10 1000-sample cycles of a noisy sine wave. 
T = 1000 
x = scipy.sin(2*scipy.pi*scipy.arange(10*T)/T) + 0.1*scipy.randn(10*T) 
# Find the maximum and minimum of each cycle. 
[(min(x[i:i+T]), max(x[i:i+T])) for i in range(0, len(x), T)] 
# prints the following: 
[(-1.2234858463372265, 1.2508648231644286), 
(-1.2272859833650591, 1.2339382830978067), 
(-1.2348835727451217, 1.2554960382962332), 
(-1.2354184224872098, 1.2305636540601534), 
(-1.2367724101594981, 1.2384651681019756), 
(-1.2239698560399894, 1.2665865375358363), 
(-1.2211500568892304, 1.1687268390393153), 
(-1.2471220836642811, 1.296787070454136), 
(-1.3047322264307399, 1.1917835644190464), 
(-1.3015059337968433, 1.1726658435644288)] 

주 정현파 (확률이 높음).

관련 문제