अपडेट करें:
मुझे इस सवाल पर आधारित एक स्कैपी रेसिपी मिली! तो, किसी के लिए भी, सीधे जाएं: सामग्री »सिग्नल प्रोसेसिंग» बटरवर्थ बैंडपास
मुझे यह हासिल करने के लिए एक कठिन समय मिल रहा है कि शुरू में 1-डी के लिए एक बटरवर्थ बैंड-पास फ़िल्टर को लागू करने का एक सरल काम लगता था (समय-श्रृंखला)।
जिन मापदंडों को मुझे शामिल करना है, वे हैं HERTZ में नमूना_ट्रेड, कटऑफ़ फ़्रीक्वेंसी और संभवतः ऑर्डर (अन्य पैरामीटर, जैसे क्षीणन, प्राकृतिक आवृत्ति, आदि मेरे लिए अधिक अस्पष्ट हैं, इसलिए कोई भी "डिफ़ॉल्ट" मान करेगा)।
मेरे पास अब यह है, जो एक उच्च-पास फिल्टर के रूप में काम करता है, लेकिन मुझे यकीन नहीं है कि मैं इसे सही कर रहा हूं:
def butter_highpass(interval, sampling_rate, cutoff, order=5):
nyq = sampling_rate * 0.5
stopfreq = float(cutoff)
cornerfreq = 0.4 * stopfreq # (?)
ws = cornerfreq/nyq
wp = stopfreq/nyq
# for bandpass:
# wp = [0.2, 0.5], ws = [0.1, 0.6]
N, wn = scipy.signal.buttord(wp, ws, 3, 16) # (?)
# for hardcoded order:
# N = order
b, a = scipy.signal.butter(N, wn, btype='high') # should 'high' be here for bandpass?
sf = scipy.signal.lfilter(b, a, interval)
return sf
डॉक्स और उदाहरण भ्रमित और अस्पष्ट हैं, लेकिन मैं "बैंडपास के लिए" के रूप में चिह्नित प्रशंसा में प्रस्तुत किए गए फॉर्म को लागू करना चाहूंगा। टिप्पणियों में प्रश्न चिह्न यह दिखाते हैं कि मैंने अभी कुछ उदाहरण को बिना समझे कॉपी-पेस्ट किया है कि क्या हो रहा है।
मैं कोई इलेक्ट्रिकल इंजीनियरिंग या वैज्ञानिक नहीं हूं, बस एक चिकित्सा उपकरण डिजाइनर को ईएमजी संकेतों पर फ़िल्टर करने के बजाय कुछ सीधे-सीधे बैंडपास प्रदर्शन करने की आवश्यकता है।