に私はこの同様の機能エンベロープMatlabのは、Python
私はすでにPythonでenvelope
機能を試してみましたが、そこでてきたと同じ結果を持っているPythonでの関数envelope
があるかどうかを知りたいですこの結果は、私が望むものと一致しません。
に私はこの同様の機能エンベロープMatlabのは、Python
私はすでにPythonでenvelope
機能を試してみましたが、そこでてきたと同じ結果を持っているPythonでの関数envelope
があるかどうかを知りたいですこの結果は、私が望むものと一致しません。
あなたが使う機能を正確に何を言及していないけれども、あなたが封筒の2種類を使用しているように、それはそうです。
あなたはMATLABでエンベロープを呼び出す方法、関連する記述である:
[yupper、ylower] =エンベロープ(x)は大きさとして、 入力シーケンス、xの上下エンベロープを返しますその分析信号の xの解析信号は、ヒルベルトで実装された という離散フーリエ変換を使用して求められます。関数は最初にx の平均を取り除き、エンベロープを計算した後にそれを加算します。 xが行列の場合、 エンベロープはxの各列に対して独立して動作します。
これに基づいて、私はあなたがヒルバーをPythonで変換する方法を探していると思います。この例はhereを見つけることができます:
に結果のimport numpy as np
import matplotlib.pyplot as plt
from scipy.signal import hilbert, chirp
duration = 1.0
fs = 400.0
samples = int(fs*duration)
t = np.arange(samples)/fs
signal = chirp(t, 20.0, t[-1], 100.0)
signal *= (1.0 + 0.5 * np.sin(2.0*np.pi*3.0*t))
analytic_signal = hilbert(signal)
amplitude_envelope = np.abs(analytic_signal)
instantaneous_phase = np.unwrap(np.angle(analytic_signal))
instantaneous_frequency = np.diff(instantaneous_phase)/(2.0*np.pi) * fs
fig = plt.figure()
ax0 = fig.add_subplot(211)
ax0.plot(t, signal, label='signal')
ax0.plot(t, amplitude_envelope, label='envelope')
ax0.set_xlabel("time in seconds")
ax0.legend()
ax1 = fig.add_subplot(212)
ax1.plot(t[1:], instantaneous_frequency)
ax1.set_xlabel("time in seconds")
ax1.set_ylim(0.0, 120.0)
:
あなたはそうです!私はあなたのソリューションとobspyライブラリと他のソリューションを試して、これらのソリューションは、2番目の画像と同じ結果になります。 –
時々私はobspy.signal.filter.envelope(data_array)を使用します。しかし、あなたは与えられた例では上の行しか得ることができません。 Obispyは地震波形を扱う非常に便利なパッケージです。
私はPythonの方が良い結果だと思います。あなたがそれについて好きではないものは何ですか? –
私は知っていますが、私は立ち下がり/立ち上がりの時間と面積を得なければなりません。この種の封筒では簡単です。 –