1次元連続信号データを変換し、与えられた帯域幅/スケールの変換範囲を生成した。指定された範囲内で最適な帯域幅またはスケールを自動的に選択する方法は?ウェーブレット変換に最適な帯域幅を選択する
例:図中、濃い青色の線は元の1D連続信号データです。他のすべての曲線は、ある範囲の帯域幅[10,20,30,40,50]のデータの変換です。この例では、はどのように自動的にカーブの変化をキャプチャする帯域幅を選択するのですか?
注:答えはPython
で、「最良の」帯域幅を計算する方法については、具体的または非常に一般的なものにすることができます。あなたが与えられた周波数によって運ばれるあなたの波の予想電力を識別するために、Welch法scipy.signal.welch
を使用することができ、この種の問題のために
import numpy
import matplotlib.pyplot as plt
from scipy.signal import ricker, cwt
data #numpy.ndarray
# data = ([11, 8, 8, 2, 2, 4, 4, 4, 4, 3, 3, 5, 5, 9, 12, 17, 19, 19, 20, 19, 19, 14, 12, 11, 9, 6, 4, 3, 3, 2, 2, 6, 9, 12, 16, 17, 19, 20, 20, 19, 17, 15, 13, 9, 7, 6, 5, 3, 2, 4], dtype=int64)
bandwidths = np.arange(10, 60, 10)
cwt_data = cwt(data, ricker, bandwidths) #transforms the data
plt.plot(cwt_speed.T, label='Transformed data')
plt.plot(speed, label='original data', linewidth=2)
plt.legend()
ありがとう! PSDグラフを作成するコードを表示してもよろしいですか?私は、信号がゼロになるまで場所を見つけようとしており、そのように、つまり信号が「死んでいる」ときにとどまっています。 –
私は(MATLABの)私の例を掘り下げることができますが、おそらくscipy関数のドキュメントの例を外すほうが簡単でしょう。 https://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.signal.welch.html –
また、私は帯域幅変換を使用して「死んだ信号'。信号の微分と二次微分を見て、「不感時間」を表す時間窓を特定するほうが良いでしょう。 –