GÜNCELLEME:
Bu soruya göre bir Scipy Tarifi buldum! Bu nedenle, ilgilenen herkes için doğrudan şu adrese gidin: İçindekiler »Sinyal işleme» Butterworth Bandpass
1-D numpy array (zaman serisi) için Butterworth bant geçiren filtre uygulamak gibi başlangıçta basit bir görev gibi görünen şeyi başarmakta zorlanıyorum.
Dahil etmem gereken parametreler, sample_rate, HERTZ İÇİNDEKİ kesme frekansları ve muhtemelen sıradır (zayıflama, doğal frekans vb. Gibi diğer parametreler benim için daha belirsizdir, bu nedenle herhangi bir "varsayılan" değer olur).
Şu anda sahip olduğum şey, yüksek geçiş filtresi olarak çalışıyor gibi görünüyor, ancak doğru yapıp yapmadığımdan emin değilim:
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
Dokümanlar ve örnekler kafa karıştırıcı ve anlaşılmaz, ancak "bant geçişi için" olarak işaretlenen açıklamada sunulan formu uygulamak istiyorum. Yorumlardaki soru işaretleri, neler olduğunu anlamadan bir örneği kopyalayıp yapıştırdığımı gösteriyor.
Elektrik mühendisliği veya bilim adamıyım, sadece EMG sinyalleri üzerinde oldukça basit bir bant geçiren filtreleme gerçekleştirmesi gereken bir tıbbi ekipman tasarımcısı değilim.