簡體   English   中英

設置巴特沃斯濾波器的參數

[英]Setting Parameters for a Butterworth Filter

我正在處理腦電波數據,並且第一次嘗試使用巴特沃斯濾波器。

這里有很多關於堆棧交換的有用資源(i) python 中的巴特沃斯濾波器和這里(ii) 如何使用 Scipy.signal.butter 實現帶通巴特沃斯濾波器

利用這些資源,我實現了以下代碼:

    from scipy.signal import butter, sosfilt, sosfreqz

    def butter_bandpass(lowcut, highcut, fs, order=5):
        nyq = 0.5 * fs
        low = lowcut / nyq
        high = highcut / nyq
        sos = butter(order, [low, high], analog=False, btype='band', output='sos')
        return sos

    def butter_bandpass_filter(data, lowcut, highcut, fs, order=5):
        sos = butter_bandpass(lowcut, highcut, fs, order=order)
        y = sosfilt(sos, data)
        return y

我正在處理的數據在左側圖上,我嘗試過濾它在右側:700 ms 延遲期間的神經活動

我相信我遇到的問題是參數。

階數:設置為 5。階數 5 的頻率響應看起來沒問題

低切:設置為排除低於 0.5 Hz 的任何內容

高切:設置為過濾掉 60 hz 以上的任何內容

FS/Sample Rate/Waves:我們能夠每秒收集 500 個數據點,所以我將其設置為 500

N:350。我們正在處理超過 700 毫秒的數據,但每隔一毫秒才采樣一次

查看我的數據,似乎我們在 700 ms 周期內有大約 2 個正弦波與 11 個更高頻率的波相結合……我是否應該能夠查看此並將低切設置為 2,將高切設置為更大比11? 我已經嘗試在這一點上迭代幾十個值......

感謝任何試圖提供幫助的人。 過去兩天我一直在試圖解決這個問題,但遇到了麻煩。

想想如果用零填充信號會發生什么。

你會突然跳到~821000。

另請注意,帶通濾波器在頻率 0 處增益為 0,這意味着直流分量將被過濾,如果在過濾前從信號中減去平均值,您可能會獲得更好的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM