2017-12-09 12 views
1

hereのように短時間フーリエ変換を実行します。限り私は、次のオブジェクトを取得理解するようSciPyから短時間フーリエ変換で周波数グリッドを設定する方法は?

from scipy.signal import stft 
f, t, Zxx = stft(data) 

:(1)周波数の値を含む1次元配列、(2)1D時間の値を含む配列、および(3)の強度を含む二次元アレイ与えられた瞬間の所定の周波数。

私の質問は、周波数のグリッドを制御/変更する方法です。デフォルトでは私は129の周波数のグリッドを得ました。私がしたい最初のことは、周波数の数を増やすことです(より細かいグリッドを持つように)。

それに加えて、使用する周波数の範囲を指定することができればいいと思います。

+0

キーワード 'fs'はデフォルトで1.0に設定されていますが、サンプリング周波数を制御することはできますが、周波数と時間スケールだけを調整することができます。あなたが探しているのは、キーワード 'nperseg = 256'です。このゲームをプレイすると、時間セグメントと周波数セグメントのトレードオフが制御されます。周波数範囲を指定することが可能かどうか私は確信していません。:( – Uvar

答えて

0

Uvarによると、観測可能な周波数の範囲は、パラメータnpersegによって制限されています。 n個のサンプルが与えられた場合、周波数fs*k/nk = 0,1,2,...,n/2の場合、fsがサンプリング周波数であり、nnpersegの場合、n/2 + 1の周波数しか観測できません。 aliasingのために高いものは失われます。これは数学的な限界であり、SciPyはそれについて何もできません。周波数のリストを十分に細かくするには、npersegを増やします。デフォルト値nperseg = 256は(256/2)+ 1 = 129の周波数を与えます。

離散フーリエ変換はすべての観測可能な周波数を一度に与えますが、カスタム範囲を選択することはできません。もちろん、目的の周波数の範囲を選択するには、出力fをスライスすることができます。

関連する問題