Tôi đang gặp khó khăn khi cố gắng tìm tài liệu để triển khai bộ lọc band-pass hoặc high-pass với python / scipy / numpy.
Tuy nhiên, tôi có thể dễ dàng tạo và áp dụng bộ lọc thông thấp, vì vậy tôi hỏi:
Liệu nó có đúng về mặt khái niệm đối với bộ lọc thông thấp một tín hiệu, sau đó trừ kết quả khỏi tín hiệu ban đầu, để chỉ nhận được các tần số cao?
Ngoài ra, nếu bất cứ ai có một ví dụ đơn giản về bộ lọc bandpass ngây thơ trong Python (tốt nhất là sử dụng các thư viện numpy và scipy), tôi sẽ rất biết ơn.
Những gì tôi tìm kiếm là một cái gì đó như:
filtered_signal = band_pass(original_signal, rate, low=20, high=500)
Cảm ơn vì bất kì sự giúp đỡ!
EDIT: với scipy, tôi đang sử dụng điều này ở mức thấp, với kết quả tốt:
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
nói như thế nào để làm cho thông thấp, thông cao, band-pass, ban nhạc ngừng, và các bộ lọc đa băng tần. Bạn đã thửfirwin(taps, cutoff=nfreq, pass_zero=False)
chưa