Saya kesulitan menemukan dokumentasi untuk mengimplementasikan filter band-pass atau high-pass dengan python / scipy / numpy.
Saya dapat dengan mudah membuat dan menerapkan filter low-pass, jadi saya bertanya:
Apakah secara konseptual benar untuk menyaring sinyal low-pass, lalu kurangi hasil dari sinyal asli, untuk mendapatkan frekuensi tinggi saja?
Juga, jika ada orang yang memiliki contoh sederhana dari filter bandpass naif di Python (lebih disukai menggunakan perpustakaan numpy dan scipy), saya akan sangat berterima kasih.
Apa yang saya cari adalah sesuatu seperti:
filtered_signal = band_pass(original_signal, rate, low=20, high=500)
Terima kasih atas bantuannya!
EDIT: dengan scipy, saya menggunakan ini sebagai low-pass, dengan hasil yang baik:
import numpy, scipy.signal
def firfilt(interval, freq, sampling_rate):
nfreq = freq/(0.5*sampling_rate)
taps = sampling_rate + 1
a = 1
b = scipy.signal.firwin(taps, cutoff=nfreq)
firstpass = scipy.signal.lfilter(b, a, interval)
## second pass to compensate phase delay
secondpass = scipy.signal.lfilter(b, a, firstpass[::-1])[::-1]
return secondpass
scipy.signal.firwin
memberi tahu cara membuat filter low-pass, high-pass, band-pass, band-stop, dan multi-band. Apakah kamu sudah mencobafirwin(taps, cutoff=nfreq, pass_zero=False)
?