2010-12-07 10 views
3

私は、周期的な動きを表すいくつかのデータを持っています。だから、それは高いものから低いものへと戻り、再び戻ってくる。それをプロットするなら、正弦波が好きです。しかし、振幅は各サイクルでわずかに変化する。シーケンス全体の最大値と最小値のリストを作成したいと思います。 10サイクルが完了すれば、10の正の値と10の負の値の20個の数字で終了します。一連のサイクリックデータの上限値と下限値の決定方法を教えてください。

これは時系列分析のための仕事であるように思えるが、私は確かに知ってするのに十分な統計情報に精通していませんよ。

私はPythonで働いています。

は、誰もが限りコードライブラリや用語できるだけ私にいくつかのガイダンスを与えることはできますか?

+0

私の答えを削除しました。私は何かが足りないことを知っていた。あなたは正弦波のすべての山と谷を求めます。 – pyfunc

+1

@pyfuncあなたはあなたのような名前でこれを見逃していますか;-) – mjv

答えて

1

おそらく、人気のpython科学/統計ライブラリのいくつかを理解する必要があります。気が狂う。

そして、あなたがnumpyのを使用してやりたい方法を議論scipyのダウンロードメーリングリストからhereのアイテム。

+1

私は 'py'と言いましたか? – 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をサイクル長を知ってしまった場合、これを試してみてください。この作業に関係なく、位相のオフセットする必要があること

# 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)] 

注意を正弦波(高い確率で)。

関連する問題