에 나는이유사 기능 봉투 matlab에 파이썬
이미 파이썬에서 envelope
기능을 시도했지만이 한 것과 같은 결과를 파이썬에서 함수 envelope
이 있는지 알고 싶습니다 이 결과는 내가 원하는 것과 일치하지 않습니다. 당신은 당신이 사용하는 기능을 정확히 언급하지 않습니다하지만 당신은 봉투의 두 가지 종류를 사용하는 것처럼
에 나는이유사 기능 봉투 matlab에 파이썬
이미 파이썬에서 envelope
기능을 시도했지만이 한 것과 같은 결과를 파이썬에서 함수 envelope
이 있는지 알고 싶습니다 이 결과는 내가 원하는 것과 일치하지 않습니다. 당신은 당신이 사용하는 기능을 정확히 언급하지 않습니다하지만 당신은 봉투의 두 가지 종류를 사용하는 것처럼
, 그것은 보인다.
는 매트랩 봉투 호출 방법, 관련 설명은 다음
가[yupper가 ylower = 봉투 (X)의 크기로서, 의 상부 및 하부 엔벨로프 입력 시퀀스 X를 반환 분석 신호의 x의 분석 신호는 hilbert에서 구현 된 과 같은 이산 푸리에 변환을 사용하여 찾습니다. 함수는 처음에 x 의 평균을 제거하고 봉투를 계산 한 후 다시 추가합니다. x가 행렬이면, 엔벨로프는 x의 각 열에 대해 독립적으로 작동합니다.
이것을 바탕으로, 나는 당신이 파이썬에서 Hilber 변환을 얻는 방법을 찾고 있다고 생각합니다. 이러한 예는 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.signal.filter.envelope (data_array)를 사용하는 것이
네 말이 맞아! 난 당신의 솔루션을 시도하고 obspy 라이브러리와 다른 이러한 솔루션은 두 번째 사진과 같은 결과를 만듭니다. –
; 그러나 주어진 예에서 위 줄만 얻을 수 있습니다. Obspy는 seismogram을 다루는 매우 유용한 패키지입니다.
파이썬이 더 나은 결과라고 말할 수 있습니다. 당신이 그것에 대해 좋아하지 않는 것은 무엇입니까? –
나는 알고있다. 그러나 나는 떨어지는/일어나는 시간과 지역을 얻어야한다. 그리고 그것은이 종류의 봉투로 더 쉽다. –