Python scipy.signal 模块,butter() 实例源码

我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用scipy.signal.butter()

项目:DTW_physionet2016    作者:JJGO    | 项目源码 | 文件源码
def homomorphic_envelope(x, fs=1000, f_LPF=8, order=3):
    """
    Computes the homomorphic envelope of x

    Args:
        x : array
        fs : float
            Sampling frequency. Defaults to 1000 Hz
        f_LPF : float
            Lowpass frequency, has to be f_LPF < fs/2. Defaults to 8 Hz
    Returns:
        time : numpy array
    """
    b, a = butter(order, 2 * f_LPF / fs, 'low')
    he = np.exp(filtfilt(b, a, np.log(np.abs(hilbert(x)))))
    return he
项目:EEG-Grasp-Kaggle    作者:esube    | 项目源码 | 文件源码
def butter_highpass(highcut, fs, order):
    nyq = 0.5 * fs
    high = highcut / nyq
    b, a = butter(order, high, btype="highpass")
    return b, a


# Sources for Batch Iterators
#
# These classes load training and test data and perform some basic preprocessing on it.
# They are then passed to factory functions that create the net. There they are used
# as data sources for the batch iterators that feed data to the net.
# All classes band pass or low pass filter their data based on min / max freq using
# a causal filter (lfilter) when the data is first loaded.
# * TrainSource loads a several series of EEG data and events, splices them together into
#   one long stream, then normalizes the EEG data to zero mean and unit standard deviation.
# * TestSource is like TrainSource except that it uses the mean and standard deviation
#   computed for the associated training source to normalize the EEG data.
# * SubmitSource is like TestSource except that it does not load and event data.
项目:spyking-circus    作者:spyking-circus    | 项目源码 | 文件源码
def highpass(data, BUTTER_ORDER=3, sampling_rate=10000, cut_off=500.0):
    Wn = (float(cut_off) / (float(sampling_rate) / 2.0), 0.95)
    b, a = signal.butter(BUTTER_ORDER, Wn, 'pass')
    return signal.filtfilt(b, a, data)
项目:pdnn    作者:petered    | 项目源码 | 文件源码
def __init__(self, threshold_freq, order=2, design='cheby1'):
        """
        :param threshold_freq: Threshold frequency to filter out, as a fraction of sampling freq.  E.g. 0.1
        """
        self.b, self.a = \
            butter(N=order, Wn=threshold_freq, btype='low') if design == 'butter' else \
            cheby1(N=order, rp=0.1, Wn=threshold_freq, btype='low') if design == 'cheby1' else \
            bad_value(design)
        self.filter_state = lfilter_zi(b=self.b, a=self.a)
项目:psola    作者:jcreinhold    | 项目源码 | 文件源码
def lpf(x, cutoff, fs, order=5):
    """
    low pass filters signal with Butterworth digital
    filter according to cutoff frequency

    filter uses Gustafsson’s method to make sure
    forward-backward filt == backward-forward filt

    Note that edge effects are expected

    Args:
        x      (array): signal data (numpy array)
        cutoff (float): cutoff frequency (Hz)
        fs       (int): sample rate (Hz)
        order    (int): order of filter (default 5)

    Returns:
        filtered (array): low pass filtered data
    """
    nyquist = fs / 2
    b, a = butter(order, cutoff / nyquist)
    if not np.all(np.abs(np.roots(a)) < 1):
        raise PsolaError('Filter with cutoff at {} Hz is unstable given '
                         'sample frequency {} Hz'.format(cutoff, fs))
    filtered = filtfilt(b, a, x, method='gust')
    return filtered
项目:Wall-EEG    作者:neurotechuoft    | 项目源码 | 文件源码
def butter_bandpass(lowcut, highcut, order=5):
    nyq = 0.5 * 250
    low = lowcut / nyq
    high = highcut / nyq
    b, a = butter(order, [low, high], btype='band')
    return b, a
项目:ECG_Respiratory_Monitor    作者:gabrielibagon    | 项目源码 | 文件源码
def __init__(self,window_size, low, high):
        fs_Hz = 250;
        fn = fs_Hz/2
        self.filtered_data = np.array((window_size,1))


        #######################################
        # Filter Creation
        # -------------------------------------
        #
        # Create a filter using the scipy module,
        # based on specifications suggested by
        # Pan-Tompkins (bandpass from 5-15Hz)
        #
        #
        # 1) Establish constants:
        #       a) filter_order = 2
        #       b) high pass cutoff = 15Hz
        #       c) low pass cutoff = 5Hz
        # 2) Calculate the coefficients, store in variables

        filter_order = 2
        f_high = high
        f_low = low
        self.high_pass_coefficients = signal.butter(filter_order,f_low/fn, 'high')
        self.low_pass_coefficients = signal.butter(filter_order,f_high/fn, 'low')


    #######################################
    # Bandpass filter
    # -------------------------------------
    # Filter the data, using a bandpass of 
    # 5-15Hz.
    # 
    # Input: 
    #           the data buffer from Data_Buffer class
    # Output:
    #           filtered data as a numpy array
项目:AutoSleepScorerDev    作者:skjerns    | 项目源码 | 文件源码
def butter_bandpass(lowcut, highpass, fs, order=4):
       nyq = 0.5 * fs
#       low = lowcut / nyq
       high = highpass / nyq
       b, a = butter(order, high, btype='highpass')
       return b, a
项目:Wall-EEG    作者:neurotechuoft    | 项目源码 | 文件源码
def butter_bandpass(self, lowcut, highcut, order=5):
        nyq = 0.5 * self.sample_rate
        low = lowcut / nyq
        high = highcut / nyq
        b, a = butter(order, [low, high], btype='band')
        return b, a
项目:wiicop    作者:barnabuskev    | 项目源码 | 文件源码
def bfilt(cop_dat, cutoff, order):
    # Butterworth filter
    b,a = signal.butter(order, cutoff)
    # filter coronal
    cor_lp = signal.filtfilt(b, a, cop_dat[:,0])
    # filter sagittal
    sag_lp = signal.filtfilt(b, a, cop_dat[:,1])
    return np.concatenate((to_sing(cor_lp),to_sing(sag_lp),to_sing(cop_dat[:,2])),axis=1)
项目:SiteResponseTool    作者:GEMScienceTools    | 项目源码 | 文件源码
def Filter(self, LowCorner, HighCorner, Order=3):
    """
    Butterworth bandpass filter
    """

    FS = 1./self.HDR['TSMP']

    if HighCorner >= FS/2.:
      print 'Warning: High corner must be < {0:.2f} Hz'.format(FS/2.)
      return

    if LowCorner < 0.:
      print 'Warning: Low corner must be > 0 Hz'.format(FS/2.)
      return

    # Corner frequencies
    Corners = [2.*LowCorner/FS, 2.*HighCorner/FS]

    # Butterworth filter
    b, a = _sig.butter(Order, Corners, btype='band')

    # Filtering records
    for I,S in enumerate(self.CHN):
      # self.CHN[I] = _sig.lfilter(b, a, S)
      zi = _sig.lfilter_zi(b, a);
      self.CHN[I],_ = _sig.lfilter(b, a, S, zi=zi*S[0])

#-----------------------------------------------------------------------------------------
项目:bark    作者:kylerbrown    | 项目源码 | 文件源码
def _analog_filter(self,
                       ftype,
                       highpass=None,
                       lowpass=None,
                       order=3,
                       zerophase=True):
        ' Use a classic analog filter on the data, currently butter or bessel'
        from scipy.signal import butter, bessel
        filter_types = {'butter': butter, 'bessel': bessel}
        afilter = filter_types[ftype]
        if highpass is None and lowpass is not None:
            b, a = afilter(order, lowpass / (self.sr / 2), btype='lowpass')
        elif highpass is not None and lowpass is None:
            b, a = afilter(order, highpass / (self.sr / 2), btype='highpass')
        elif highpass is not None and lowpass is not None:
            if highpass < lowpass:
                b, a = afilter(order,
                               (highpass / (self.sr / 2),
                                lowpass / (self.sr / 2)),
                               btype='bandpass')
            else:
                b, a = afilter(order,
                               (lowpass / (self.sr / 2),
                                highpass / (self.sr / 2)),
                               btype='bandstop')
        if zerophase:
            return self.filtfilt(b, a)
        else:
            return self.lfilter(b, a)
项目:bark    作者:kylerbrown    | 项目源码 | 文件源码
def butter(self, highpass=None, lowpass=None, order=3, zerophase=True):
        ' Buttworth filter the data'
        return self._analog_filter('butter', highpass, lowpass, order,
                                   zerophase)
项目:bark    作者:kylerbrown    | 项目源码 | 文件源码
def abs_and_smooth(x, sr, lp=100):
    abs_x = np.abs(x)
    if len(x.shape) > 1:
        abs_x = np.sum(abs_x,
                       axis=-1)  # sum over last dimension eg sum over channels
    b, a = butter(3, lp / 2 / sr, btype="low")
    filtered_x = filtfilt(b, a, abs_x, axis=0)
    return filtered_x
项目:bark    作者:kylerbrown    | 项目源码 | 文件源码
def test_filtfilt():
    sr = 1000
    freq = 100
    b, a = butter(3, freq / (sr / 2), 'high')
    for data in (data2, data3, data4):
        x = filtfilt(b, a, data, axis=0)
        y = Stream(data, chunksize=211, sr=sr).filtfilt(b, a).call()
        assert eq(x, y)
项目:Epileptic-Seizure-Prediction    作者:cedricsimar    | 项目源码 | 文件源码
def low_pass_filter(self, sig, low_cut, high_cut, nyq):

        """ 
        Apply a low pass filter to the data to take the relevant frequencies
        and to smooth the drop-out regions

        No resample necessary because all files have the same sampling frequency
        """

        b, a = signal.butter(5, np.array([low_cut, high_cut]) / nyq, btype='band')
        sig_filt = signal.lfilter(b, a, sig, axis=0)

        return(np.float32(sig_filt))
项目:srep    作者:Answeror    | 项目源码 | 文件源码
def butter_bandpass_filter(data, lowcut, highcut, fs, order):
    from scipy.signal import butter, lfilter

    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq

    b, a = butter(order, [low, high], btype='bandpass')
    y = lfilter(b, a, data)
    return y
项目:srep    作者:Answeror    | 项目源码 | 文件源码
def butter_bandstop_filter(data, lowcut, highcut, fs, order):
    from scipy.signal import butter, lfilter

    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq

    b, a = butter(order, [low, high], btype='bandstop')
    y = lfilter(b, a, data)
    return y
项目:srep    作者:Answeror    | 项目源码 | 文件源码
def butter_lowpass_filter(data, cut, fs, order, zero_phase=False):
    from scipy.signal import butter, lfilter, filtfilt

    nyq = 0.5 * fs
    cut = cut / nyq

    b, a = butter(order, cut, btype='low')
    y = (filtfilt if zero_phase else lfilter)(b, a, data)
    return y
项目:kaggle-seizure-prediction    作者:sics-lm    | 项目源码 | 文件源码
def apply_butter_filter(self, data, order, cutoff, btype):
        cutoff /= self.nyq
        b, a = butter(N=order, Wn=cutoff, btype=btype)
        return filtfilt(b, a, data, axis=1)
项目:brainpipe    作者:EtienneCmb    | 项目源码 | 文件源码
def _getFiltDesign(sf, f, npts, filtname, cycle, order, axis):
    """Get the designed filter
    sf : sample frequency
    f : frequency vector/list [ex : f = [2,4]]
    npts : number of points
    - 'fir1'
    - 'butter'
    - 'bessel'
    """

    if type(f) != np.ndarray:
        f = np.array(f)

    # fir1 filter :
    if filtname == 'fir1':
        fOrder = fir_order(sf, npts, f[0], cycle=cycle)
        b, a = fir1(fOrder, f/(sf / 2))

    # butterworth filter :
    elif filtname == 'butter':
        b, a = butter(order, [(2*f[0])/sf, (2*f[1])/sf], btype='bandpass')
        fOrder = None

    # bessel filter :
    elif filtname == 'bessel':
        b, a = bessel(order, [(2*f[0])/sf, (2*f[1])/sf], btype='bandpass')
        fOrder = None

    def filtSignal(x):
        return filtfilt(b, a, x, padlen=fOrder, axis=axis)

    return filtSignal
项目:nelpy    作者:nelpy    | 项目源码 | 文件源码
def butter_bandpass(lowcut, highcut, fs, order=5):
    """Returns a bandpass butterworth filter."""
    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq
    b, a = butter(order, [low, high], btype='band')
    return b, a
项目:nelpy    作者:nelpy    | 项目源码 | 文件源码
def butter_lowpass(cutoff, fs, order=5):
    """Returns a lowpass butterworth filter."""
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a
项目:nelpy    作者:nelpy    | 项目源码 | 文件源码
def butterfilt(finname, foutname, fmt, fs, fl=5.0, fh=100.0, gpass=1.0, gstop=30.0, ftype='butter', buffer_len=100000, overlap_len=100, max_len=-1):
    """Given sampling frequency, low and high pass frequencies design a butterworth filter and filter our data with it."""
    fso2 = fs/2.0
    wp = [fl/fso2, fh/fso2]
    ws = [0.8*fl/fso2,1.4*fh/fso2]
    import pdb; pdb.set_trace()
    b, a = iirdesign(wp, ws, gpass=gpass, gstop=gstop, ftype=ftype, output='ba')
    y = filtfiltlong(finname, foutname, fmt, b, a, buffer_len, overlap_len, max_len)
    return y, b, a
项目:Tweezer_design    作者:AntoineRiaud    | 项目源码 | 文件源码
def periodic_derivative(x,y,max_periods):
    plot = False
    Ns =len(x)
    b,a = signalbutter(8,2.0*max_periods/Ns)
    ymid =interp(x+0.5*(x[1]-x[0]),x,y,period=2*np_pi)
    yder = diff(ymid)/diff(x) 
    #yder = Ns/(max(x)-min(x))*fftpackdiff(y,1,Ns)
    yder_filt = deepcopy(yder)
    x_filt = deepcopy(x)
    x_filt = npappend(x_filt,x_filt[-1]+x_filt[1]-x_filt[0])
    yder_filt = signalfiltfilt(b,a,npappend(yder_filt,yder_filt[0]))
    if plot:
        plt.figure(1)
        plt.subplot(311)
        plt.plot(x, y)

        plt.subplot(312)
        plt.plot(x[0:-1],yder)

        plt.subplot(313)
        plt.plot(x_filt[0:-1],yder_filt)
        plt.show()
    return yder_filt


#x = numpy.array(range(100))
#y = numpy.sin(twopi*x/100)+numpy.sin(twopi*x/10)
#periodic_derivative(x,y,4)
项目:signal_subspace    作者:scivision    | 项目源码 | 文件源码
def butterplot(fs,fc):
    """
    https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.butter.html
    """
    b, a = signal.butter(4, 100, 'low', analog=True)
    w, h = signal.freqs(b, a)
    ax = figure().gca()
    ax.semilogx(fs*0.5/np.pi*w, 20*np.log10(abs(h)))
    ax.set_title('Butterworth filter frequency response')
    ax.set_xlabel('Frequency [Hz]')
    ax.set_ylabel('Amplitude [dB]')
    ax.grid(which='both', axis='both')
    ax.axvline(fc, color='green') # cutoff frequency
    ax.set_ylim(-50,0)
项目:timbral_models    作者:AudioCommons    | 项目源码 | 文件源码
def butter_lowpass(cutoff, fs, order=2):
    """
     This function calculates the butterworth filter coefficients for a given cutoff frequency and order.

     :param cutoff: Cutoff frequency as a proportion of the Nyquist frequency (Freq (Hz) / (Sample rate / 2))
     :param fs:     Sample rate of signal to be filtered
     :param order:  Filter order, defaults to second order filter, as required by timbral_metallic
     :return: returns the coefficients of a Butterworth filter
    """
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a
项目:DTW_physionet2016    作者:JJGO    | 项目源码 | 文件源码
def butter_highpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='highpass', analog=False)
    return b, a
项目:audioanalysis    作者:jpalpant    | 项目源码 | 文件源码
def butter_highpass(cutoff, fs, order=5):
        nyq = 0.5 * fs
        normal_cutoff = cutoff / nyq
        b, a = signal.butter(order, normal_cutoff, btype='high', analog=False)
        return b, a
项目:cu-perception-manipulation-stack    作者:correlllab    | 项目源码 | 文件源码
def filter(self):
        path = os.getcwd()+'/trialGraspEventDetection_dataFiles'
        self.Fgr = np.sum(self.values[:, 9:15], axis=1)  # SAI
        self.Fgl = np.sum(self.values[:, 0:7], axis=1)  # SAI

        # can use this to plot in matlab graspeventdetection_plot.m
        np.savetxt(path+'/SAI_Fgr.txt', self.Fgr)
        # can use this to plot in matlab
        np.savetxt(path+'/SAI_Fgl.txt', self.Fgl)

        # 0.55*pi rad/samples
        b1, a1 = signal.butter(1, 0.55, 'high', analog=False)
        self.f_acc_x = signal.lfilter(b1, a1, self.acc_x, axis=-1, zi=None)
        self.f_acc_y = signal.lfilter(b1, a1, self.acc_y, axis=-1, zi=None)
        self.f_acc_z = signal.lfilter(b1, a1, self.acc_z, axis=-1, zi=None)
        # self.f_eff = signal.lfilter(b1, a1, self.eff, axis=-1, zi=None)
        # type(eff)
        self.FAII = np.sqrt(np.square(self.f_acc_x) +
                            np.square(self.f_acc_y) +
                            np.square(self.f_acc_z))
        # can use this to plot in matlab
        np.savetxt(path+'/FAII.txt', self.FAII)

        # subtract base values from the values array
        self.values1 = self.values - self.values.min(axis=0)
        # pass the filter for each sensor
        self.fvalues1 = np.zeros(self.values1.shape)
        # 0.48*pi rad/samples
        b, a = signal.butter(1, 0.48, 'high', analog=False)
        for i in range(16):
            self.fvalues1[:, i] = signal.lfilter(b, a, self.values1[:, i],
                                                 axis=-1, zi=None)
        self.FAI = np.sum(self.fvalues1, axis=1)
        # can use this to plot in matlab
        np.savetxt(path+'/FAI.txt', self.FAI)
项目:ugm-kayu-nde    作者:mappuji    | 项目源码 | 文件源码
def butter_bandpass(lowcut, highcut, sampling_freq, order=5):
    """ Butterworth with default order of 5
    """
    nyq = 0.5 * sampling_freq
    low = lowcut / nyq
    high = highcut / nyq
    numerator, denominator = butter(order, [low, high], btype='band')
    return numerator, denominator
项目:pdc-project    作者:ealain    | 项目源码 | 文件源码
def low_pass_filter(x, order, cutOffFrequency, samplingFrequency):
    nyq = samplingFrequency*0.5
    cut = cutOffFrequency/nyq
    b, a = signal.butter(order, cut, btype='low')
    y = signal.filtfilt(b, a, x)
    return y
项目:pyEMG    作者:agamemnonc    | 项目源码 | 文件源码
def imu_filter_lowpass(x, order = 4, sRate = 148.148148148148, highcut = 20.0):
    """ Forward-backward band-pass filtering (IIR butterworth filter) """
    nyq = 0.5 * sRate
    high = highcut/nyq
    b, a = butter(N =order, Wn = high, btype = 'low')
    return filtfilt(b=b, a=a, x=x, axis=0, method = 'pad', padtype = 'odd',
                    padlen = np.minimum(3*len(a)*len(b), x.shape[0]-1))
项目:pyEMG    作者:agamemnonc    | 项目源码 | 文件源码
def imu_filter_highpass(x, order = 4, sRate = 148.148148148148, lowcut = 0.01):
    """ Forward-backward band-pass filtering (IIR butterworth filter) """
    nyq = 0.5 * sRate
    low = lowcut/nyq
    b, a = butter(N =order, Wn = low, btype = 'high')
    return filtfilt(b=b, a=a, x=x, axis=0, method = 'pad', padtype = 'odd',
                    padlen = np.minimum(3*len(a)*len(b), x.shape[0]-1))
项目:pyEMG    作者:agamemnonc    | 项目源码 | 文件源码
def imu_filter_bandpass(x, order = 4, sRate = 148.148148148148, lowcut = 1., highcut = 20.):
    """ Forward-backward band-pass filtering (IIR butterworth filter) """
    nyq = 0.5 * sRate
    low = lowcut/nyq
    high = highcut/nyq
    b, a = butter(N =order, Wn = [low, high], btype = 'band')
    return filtfilt(b=b, a=a, x=x, axis=0, method = 'pad', padtype = 'odd',
                    padlen = np.minimum(3*len(a)*len(b), x.shape[0]-1))
项目:pyEMG    作者:agamemnonc    | 项目源码 | 文件源码
def emg_filter(self,order = 4, lowcut = 10., highcut = 500.):
        nyq = 0.5 * self.sRate['emg']
        low = lowcut/nyq
        high = highcut/nyq
        b, a = butter(order, [low, high], btype = 'band')
        self.emg = lfilter(b=b, a=a, x=self.emg, axis=0)
项目:pyEMG    作者:agamemnonc    | 项目源码 | 文件源码
def glove_filter(self, order = 4, highcut = 2):
        nyq = 0.5 * self.sRate['glove']
        high = highcut/nyq
        b, a = butter(N=order, Wn = high, btype = 'lowpass')
        self.glove = filtfilt(b=b, a=a, x=self.glove, axis=0)
项目:pyEMG    作者:agamemnonc    | 项目源码 | 文件源码
def glove_filter_lowpass(x, order = 4, sRate = 2000., highcut = 1.):
    """ Forward-backward band-pass filtering (IIR butterworth filter) """
    nyq = 0.5 * sRate
    high = highcut/nyq
    b, a = butter(order, high, btype = 'low')
    filtered = filtfilt(b=b, a=a, x=x, axis=0, method = 'pad', padtype = 'odd')
    return filtered
项目:speech_enhacement_spectral_domain    作者:korjani    | 项目源码 | 文件源码
def butter_bandpass(lowcut, highcut, fs, order=5):
    nyq = 0.5 * fs
    low = lowcut / nyq
    high = highcut / nyq
    b, a = butter(order, [low, high], btype='band')
    return b, a
项目:polo_robot    作者:kmarci9    | 项目源码 | 文件源码
def butter_lowpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a
项目:LSTM_cpd    作者:RobRomijnders    | 项目源码 | 文件源码
def generate_noise(D,N):
  """Generate data for the changepoint detection. Data can either be of type 0
  or type 1, but when it's a combination fo both, we define a target label
  Input
  - D,N Dimenstionality arguments D dimensions over N samples
  Output
  - Data in format
  X is a matrix in R^{N x D}
  y is a matrix in R^{N,} not to donfuse with {N,1}"""
  #Check if we have even D, so we can split the array in future
  assert D%2 == 0, 'We need even number of dimensions'
  Dhalf = int(D/2)
  ratioP = 0.5   #balance of targets
  X = np.random.randn(N,D)
  y = np.zeros(N)
  #Generate two filter cofficients
  filters = {}
  filters['b1'],filters['a1'] = signal.butter(4,2.0*cutoff1/fs,btype='lowpass')
  filters['b0'],filters['a0'] = signal.butter(4,2.0*cutoff0/fs,btype='lowpass')
  for i in xrange(N):
    if np.random.rand() > 0.5:  #Half of the samples will have changepoint, other half wont
      signalA = signal.filtfilt(filters['b1'],filters['a1'],X[i])
      signalB = signal.filtfilt(filters['b0'],filters['a0'],X[i])
      X[i] = np.concatenate((signalA[:Dhalf],signalB[:Dhalf]),axis=0)    #Concatenate the two signals
      if True:  #Boolean: do you want to introduce a pattern at the changepoint?
        Dstart = int(Dhalf-pattern_len/2)
        X[i,Dstart:Dstart+pattern_len] = pattern
      y[i] = 1      #The target label
    else:
      mode = int(np.random.rand()>ratioP)
      X[i] = signal.filtfilt(filters['b'+str(mode)],filters['a'+str(mode)],X[i])
      y[i] = 0      #The target label
  return X,y
项目:LSTM_cpd    作者:RobRomijnders    | 项目源码 | 文件源码
def generate_noise(D,N):
  """Generate data for the changepoint detection. Data can either be of type 0
  or type 1, but when it's a combination fo both, we define a target label
  Input
  - D,N Dimenstionality arguments D dimensions over N samples
  Output
  - Data in format
  X is a matrix in R^{N x D}
  y is a matrix in R^{N,} not to donfuse with {N,1}"""
  #Check if we have even D, so we can split the array in future
  assert D%2 == 0, 'We need even number of dimensions'
  Dhalf = int(D/2)
  ratioP = 0.5   #balance of targets
  X = np.random.randn(N,D)
  y = np.zeros(N)
  mark = np.zeros(N)
  #Generate two filter cofficients
  filters = {}
  filters['b1'],filters['a1'] = signal.butter(4,2.0*cutoff1/fs,btype='lowpass')
  filters['b0'],filters['a0'] = signal.butter(4,2.0*cutoff0/fs,btype='lowpass')
  for i in xrange(N):
    if np.random.rand() > 0.5:  #Half of the samples will have changepoint, other half wont
      Dcut = np.random.randint(pattern_len,D-pattern_len)
      signalA = signal.filtfilt(filters['b1'],filters['a1'],X[i])
      signalB = signal.filtfilt(filters['b0'],filters['a0'],X[i])
      X[i] = np.concatenate((signalA[:Dcut],signalB[Dcut:]),axis=0)    #Concatenate the two signals
      if True:  #Boolean: do you want to introduce a pattern at the changepoint?
        Dstart = int(Dcut - pattern_len/2)
        X[i,Dstart:Dstart+pattern_len] = pattern
      y[i] = 1      #The target label
      mark[i] = Dcut
    else:
      mode = int(np.random.rand()>ratioP)
      X[i] = signal.filtfilt(filters['b'+str(mode)],filters['a'+str(mode)],X[i])
      y[i] = 0      #The target label
  return X,y,mark
项目:LSTM_cpd    作者:RobRomijnders    | 项目源码 | 文件源码
def generate_noise(D,N):
  """Generate data for the changepoint detection. Data can either be of type 0
  or type 1, but when it's a combination fo both, we define a target label
  Input
  - D,N Dimenstionality arguments D dimensions over N samples
  Output
  - Data in format
  X is a matrix in R^{N x D}
  y is a matrix in R^{N,} not to donfuse with {N,1}"""
  #Check if we have even D, so we can split the array in future
  assert D%2 == 0, 'We need even number of dimensions'
  ratioP = 0.5   #balance of targets
  X = np.random.randn(N,D)
  y = np.zeros(N)
  mark = np.zeros(N)
  #Generate two filter cofficients
  filters = {}
  filters['b1'],filters['a1'] = signal.butter(4,2.0*cutoff1/fs,btype='lowpass')
  filters['b0'],filters['a0'] = signal.butter(4,2.0*cutoff0/fs,btype='lowpass')
  for i in xrange(N):
    if np.random.rand() > 0.5:  #Half of the samples will have changepoint, other half wont
      Dcut = np.random.randint(pattern_len,D-pattern_len)
      signalA = signal.filtfilt(filters['b1'],filters['a1'],X[i])
      signalB = signal.filtfilt(filters['b0'],filters['a0'],X[i])
      X[i] = np.concatenate((signalA[:Dcut],signalB[Dcut:]),axis=0)    #Concatenate the two signals
      if True:  #Boolean: do you want to introduce a pattern at the changepoint?
        Dstart = int(Dcut - pattern_len/2)
        X[i,Dstart:Dstart+pattern_len] = pattern
      y[i] = 1      #The target label
      mark[i] = Dcut
    else:
      mode = int(np.random.rand()>ratioP)
      X[i] = signal.filtfilt(filters['b'+str(mode)],filters['a'+str(mode)],X[i])
      y[i] = 0      #The target label
  return X,y,mark
项目:python-Speech_Recognition    作者:zthxxx    | 项目源码 | 文件源码
def butter_bandpass(low_cut, high_cut, sample_frequency, order=6):
    nyquist_f = 0.5 * sample_frequency
    low_point = low_cut / nyquist_f
    high_point = high_cut / nyquist_f
    b, a = signal.butter(order, (low_point, high_point), btype='bandpass')
    iir_polynomial = (b, a)
    return iir_polynomial
项目:Data-Mining-Project    作者:mrsan22    | 项目源码 | 文件源码
def butterFilter(data,lowcut,highcut):
    low = lowcut / nyquist
    high = highcut / nyquist
    B, A = signal.butter(N, [low, high], btype='band', output='ba')
    data_f = signal.lfilter(B,A,data)
    Y=np.fft.fft(data_f)
    n=len(Y)
    power = abs(Y[0:(n/2)])**2
    freq=np.arange(0,n/2,1)/(n/2.0)*nyquist
    return (freq,power)
项目:OpenBCI_LSL    作者:OpenBCI    | 项目源码 | 文件源码
def __init__(self,window_size, low, high):
        fs_Hz = 250;
        fn = fs_Hz/2
        self.filtered_data = np.array((window_size,1))


        #######################################
        # Filter Creation
        # -------------------------------------
        #
        # Create a filter using the scipy module,
        # based on specifications suggested by
        # Pan-Tompkins (bandpass from 5-15Hz)
        #
        #
        # 1) Establish constants:
        #       a) filter_order = 2
        #       b) high pass cutoff = 15Hz
        #       c) low pass cutoff = 5Hz
        # 2) Calculate the coefficients, store in variables

        filter_order = 2
        f_high = high
        f_low = low
        self.high_pass_coefficients = signal.butter(filter_order,f_low/fn, 'high')
        self.low_pass_coefficients = signal.butter(filter_order,f_high/fn, 'low')


    #######################################
    # Bandpass filter
    # -------------------------------------
    # Filter the data, using a bandpass of 
    # 5-15Hz.
    # 
    # Input: 
    #           the data buffer from Data_Buffer class
    # Output:
    #           filtered data as a numpy array
项目:EEG-Grasp-Kaggle    作者:esube    | 项目源码 | 文件源码
def butter_lowpass(highcut, fs, order):
    nyq = 0.5 * fs
    high = highcut / nyq
    b, a = butter(order, high, btype="lowpass")
    return b, a
项目:EEG-Grasp-Kaggle    作者:esube    | 项目源码 | 文件源码
def butter_bandpass(lowcut, highcut, fs, order):
    nyq = 0.5 * fs
    cutoff = [lowcut / nyq, highcut / nyq]
    b, a = butter(order, cutoff, btype="bandpass")
    return b, a
项目:spyking-circus-ort    作者:spyking-circus    | 项目源码 | 文件源码
def _initialize(self):

        cut_off = np.array([self.cut_off, 0.95 * (self.sampling_rate / 2.0)])
        filter_= signal.butter(3, cut_off / (self.sampling_rate / 2.0), 'pass')
        self.b = filter_[0]
        self.a = filter_[1]
        self.z = {}

        return
项目:ecogdeep    作者:nancywang1991    | 项目源码 | 文件源码
def butter_lowpass(cutoff, fs, order=5):
    nyq = 0.5 * fs
    normal_cutoff = cutoff / nyq
    b, a = butter(order, normal_cutoff, btype='low', analog=False)
    return b, a