2016-06-22 2 views
1

에 나는이유사 기능 봉투 matlab에 파이썬

picture

이미 파이썬에서 envelope 기능을 시도했지만이 한 것과 같은 결과를 파이썬에서 함수 envelope이 있는지 알고 싶습니다 이 결과는 내가 원하는 것과 일치하지 않습니다. 당신은 당신이 사용하는 기능을 정확히 언급하지 않습니다하지만 당신은 봉투의 두 가지 종류를 사용하는 것처럼

result

+1

파이썬이 더 나은 결과라고 말할 수 있습니다. 당신이 그것에 대해 좋아하지 않는 것은 무엇입니까? –

+0

나는 알고있다. 그러나 나는 떨어지는/일어나는 시간과 지역을 얻어야한다. 그리고 그것은이 종류의 봉투로 더 쉽다. –

답변

0

, 그것은 보인다.

는 매트랩 봉투 호출 방법, 관련 설명은 다음

[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)를 사용하는 것이

enter image description here

+0

네 말이 맞아! 난 당신의 솔루션을 시도하고 obspy 라이브러리와 다른 이러한 솔루션은 두 번째 사진과 같은 결과를 만듭니다. –

0

; 그러나 주어진 예에서 위 줄만 얻을 수 있습니다. Obspy는 seismogram을 다루는 매우 유용한 패키지입니다.