本文整理汇总了Python中scipy.signal.lfilter方法的典型用法代码示例。如果您正苦于以下问题:Python signal.lfilter方法的具体用法?Python signal.lfilter怎么用?Python signal.lfilter使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类scipy.signal
的用法示例。
在下文中一共展示了signal.lfilter方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: discount
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def discount(x, gamma):
"""
Compute discounted sum of future values
out[i] = in[i] + gamma * in[i+1] + gamma^2 * in[i+2] + ...
"""
return signal.lfilter([1], [1, -gamma], x[::-1], axis=0)[::-1]
示例2: spectrogram2wav
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def spectrogram2wav(mag):
'''# Generate wave file from spectrogram'''
# transpose
mag = mag.T
# de-noramlize
mag = (np.clip(mag, 0, 1) * hp.max_db) - hp.max_db + hp.ref_db
# to amplitude
mag = np.power(10.0, mag * 0.05)
# wav reconstruction
wav = griffin_lim(mag)
# de-preemphasis
wav = signal.lfilter([1], [1, -hp.preemphasis], wav)
# trim
wav, _ = librosa.effects.trim(wav)
return wav.astype(np.float32)
示例3: butter_filter
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def butter_filter(sig, fs, ftype="low", low_cut=50, high_cut=2000, order=5):
"""
Apply filter to signal.
Args:
- sig (array) : the signal array to filter.
- fs (float) : the sampling rate.
- ftype (str) : the filter type, by default defined to a low pass filter
- low_cut (float) : the low cutoff frequency, by default defined to 50Hz
- high_cut (float) : the high cutoff frequency, by default defined to 2000Hz.
- order (int) : order of the filter, by default defined to 5.
Returns:
array of the filtered signal.
"""
if ftype == "band" : b, a = butter_bandpass(low_cut, high_cut, fs, order)
elif ftype == "high" : b, a = butter_highpass(high_cut, fs, order)
else : b, a = butter_lowpass(low_cut, fs, order)
# filter signal
y = lfilter(b, a, sig)
return y
示例4: preemphasis
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def preemphasis(wav, coeff=0.97):
"""
Emphasize high frequency range of the waveform by increasing power(squared amplitude).
Parameters
----------
wav : np.ndarray [shape=(n,)]
Real-valued the waveform.
coeff: float <= 1 [scalar]
Coefficient of pre-emphasis.
Returns
-------
preem_wav : np.ndarray [shape=(n,)]
The pre-emphasized waveform.
"""
preem_wav = signal.lfilter([1, -coeff], [1], wav)
return preem_wav
示例5: inv_preemphasis
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def inv_preemphasis(preem_wav, coeff=0.97):
"""
Invert the pre-emphasized waveform to the original waveform.
Parameters
----------
preem_wav : np.ndarray [shape=(n,)]
The pre-emphasized waveform.
coeff: float <= 1 [scalar]
Coefficient of pre-emphasis.
Returns
-------
wav : np.ndarray [shape=(n,)]
Real-valued the waveform.
"""
wav = signal.lfilter([1], [1, -coeff], preem_wav)
return wav
示例6: compressor
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def compressor(x, thresh=-24, ratio=2, attackrel=0.045, sr=44100.0, dtype=np.float32):
"""
simple compressor effect, code thanks to Eric Tarr @hackaudio
Inputs:
x: the input waveform
thresh: threshold in dB
ratio: compression ratio
attackrel: attack & release time in seconds
sr: sample rate
"""
attack = attackrel * sr # convert to samples
fc = 1.0/float(attack) # this is like 1/attack time
b, a = scipy_signal.butter(1, fc, analog=False, output='ba')
zi = scipy_signal.lfilter_zi(b, a)
dB = 20. * np.log10(np.abs(x) + 1e-6)
in_env, _ = scipy_signal.lfilter(b, a, dB, zi=zi*dB[0]) # input envelope calculation
out_env = np.copy(in_env) # output envelope
i = np.where(in_env > thresh) # compress where input env exceeds thresh
out_env[i] = thresh + (in_env[i]-thresh)/ratio
gain = np.power(10.0,(out_env-in_env)/20)
y = x * gain
return y
示例7: discount_cumsum
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def discount_cumsum(x, discount):
"""
Forked from rllab for computing discounted cumulative sums of vectors.
:param x (np.ndarray or tf.Tensor)
vector of [x0, x1, x2]
:return output:
[x0 + discount * x1 + discount^2 * x2,
x1 + discount * x2,
x2]
"""
return lfilter(
b=[1],
a=[1, float(-discount)],
x=x[::-1],
axis=0)[::-1]
示例8: geterrors
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def geterrors(self, params):
#copied from sandbox.tsa.arima.ARIMA
p, q = self.nar, self.nma
ar = np.concatenate(([1], -params[:p]))
ma = np.concatenate(([1], params[p:p+q]))
#lfilter_zi requires same length for ar and ma
maxlag = 1+max(p,q)
armax = np.zeros(maxlag)
armax[:p+1] = ar
mamax = np.zeros(maxlag)
mamax[:q+1] = ma
#remove zi again to match better with Skipper's version
#zi = signal.lfilter_zi(armax, mamax)
#errorsest = signal.lfilter(rhoy, rhoe, self.endog, zi=zi)[0] #zi is also returned
errorsest = signal.lfilter(ar, ma, self.endog)
return errorsest
示例9: generate_garch
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def generate_garch(nobs, ar, ma, mu=1., scale=0.1):
'''simulate standard garch
scale : float
scale/standard deviation of innovation process in GARCH process
'''
eta = scale*np.random.randn(nobs)
# copied from armageneratesample
h = signal.lfilter(ma, ar, eta**2)
#
#h = (mu+h)**2
#h = np.abs(h)
#h = np.exp(h)
#err = np.sqrt(h)*np.random.randn(nobs)
err = np.sqrt(h)*eta #np.random.standard_t(8, size=nobs)
return err, h
示例10: filter
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def filter(self, x):
'''
filter a timeseries with the ARMA filter
padding with zero is missing, in example I needed the padding to get
initial conditions identical to direct filter
Initial filtered observations differ from filter2 and signal.lfilter, but
at end they are the same.
See Also
--------
tsa.filters.fftconvolve
'''
n = x.shape[0]
if n == self.fftarma:
fftarma = self.fftarma
else:
fftarma = self.fftma(n) / self.fftar(n)
tmpfft = fftarma * fft.fft(x)
return fft.ifft(tmpfft)
示例11: filter2
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def filter2(self, x, pad=0):
'''filter a time series using fftconvolve3 with ARMA filter
padding of x currently works only if x is 1d
in example it produces same observations at beginning as lfilter even
without padding.
TODO: this returns 1 additional observation at the end
'''
from statsmodels.tsa.filters import fftconvolve3
if not pad:
pass
elif pad == 'auto':
#just guessing how much padding
x = self.padarr(x, x.shape[0] + 2*(self.nma+self.nar), atend=False)
else:
x = self.padarr(x, x.shape[0] + int(pad), atend=False)
return fftconvolve3(x, self.ma, self.ar)
示例12: exactprocess
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def exactprocess(self, xzero, nobs, ddt=1., nrepl=2):
'''ddt : discrete delta t
should be the same as an AR(1)
not tested yet
'''
t = np.linspace(ddt, nobs*ddt, nobs)
#expnt = np.exp(-self.lambd * t)
expddt = np.exp(-self.lambd * ddt)
normrvs = np.random.normal(size=(nrepl,nobs))
#do I need lfilter here AR(1) ? if mean reverting lag-coeff<1
#lfilter doesn't handle 2d arrays, it does?
inc = self._exactconst(expddt) + self._exactstd(expddt) * normrvs
return signal.lfilter([1.], [1.,-expddt], inc)
示例13: impz
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def impz(b,a):
"""Pseudo implementation of the impz method of MATLAB"""
#% Compute time vector
# M = 0; NN = [];
# if isempty(N)
# % if not specified, determine the length
# if isTF
# N = impzlength(b,a,.00005);
# else
# N = impzlength(b,.00005);
# end
p = np.roots(a)
N = stableNmarginal_length(p, 0.00005, 0)
N = len(b) * len(b) * len(b) # MATLAB AUTOFINDS THE SIZE HERE...
#TODO: Implement some way of finding the autosieze of this... I used a couple of examples... matlab gave 43 as length we give 64
x = zeros(N)
x[0] = 1
h = lfilter(b,a, x)
return h
示例14: preemphasis
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def preemphasis(wav, coeff=0.97):
"""
Emphasize high frequency range of the waveform by increasing power(squared amplitude).
Parameters
----------
wav : np.ndarray [shape=(n,)]
Real-valued the waveform.
coeff: float <= 1 [scalar]
Coefficient of pre-emphasis.
Returns
-------
preem_wav : np.ndarray [shape=(n,)]
The pre-emphasized waveform.
"""
preem_wav = signal.lfilter([1, -coeff], [1], wav)
return preem_wav
示例15: inv_preemphasis
# 需要导入模块: from scipy import signal [as 别名]
# 或者: from scipy.signal import lfilter [as 别名]
def inv_preemphasis(preem_wav, coeff=0.97):
"""
Invert the pre-emphasized waveform to the original waveform.
Parameters
----------
preem_wav : np.ndarray [shape=(n,)]
The pre-emphasized waveform.
coeff: float <= 1 [scalar]
Coefficient of pre-emphasis.
Returns
-------
wav : np.ndarray [shape=(n,)]
Real-valued the waveform.
"""
wav = signal.lfilter([1], [1, -coeff], preem_wav)
return wav