心电图ECG常用滤波器之陷波器
1.介紹
什么是陷波器?
其實(shí)就是一直特殊的帶通濾波器,只不過一般它的頻帶極窄,可以理解為就是濾除某種特定頻率的濾波器。
為什么心電圖ECG需要陷波器?
由于我們所處的環(huán)境,到處都有50/60Hz的交流電,所以采集的人體心電信號(hào)常常伴有50/60Hz頻率的信號(hào)干擾,也就是常說的工頻干擾,常規(guī)的低通濾波器很難完全把干擾濾除,這個(gè)需要設(shè)定一個(gè)針對(duì)特定頻率50/60Hz有很強(qiáng)的濾除作用的濾波器。
2.濾波器實(shí)現(xiàn)
這里我們直接使用IIR濾波,來設(shè)計(jì)陷波器,使用的是直接型 II結(jié)構(gòu)。
使用matlab的fdatool工具設(shè)計(jì)濾波器參數(shù)(這里只以50Hz為例,其它頻率同理),經(jīng)過反復(fù)測(cè)試,最終設(shè)計(jì)參數(shù)如下
圖1 50Hz陷波器?
接下來是濾波器的輸入/輸出函數(shù)模型,熟悉的話,可以直接用IIR濾波直接型 II結(jié)構(gòu)的數(shù)學(xué)模型,這里我們使用matlab推導(dǎo),導(dǎo)出剛剛設(shè)計(jì)的濾波器的Realize mode,如下:
圖2 陷波器Realize mode推導(dǎo)如下:(假設(shè)輸入為x,系統(tǒng)輸出為y)
st0?= x - a(2)*st1 - a(3)*st2;
y = st0*b(1) + st1*b(2)+st2*b(3);
st2 = st1;
st1 = st0;
其中a,b參數(shù)就是剛才設(shè)計(jì)的濾波器參數(shù),濾波器的參數(shù)和數(shù)學(xué)模型都有了,下一章節(jié)我們將對(duì)濾波器的性能進(jìn)行驗(yàn)證。
3.算法驗(yàn)證
我們這里直接使用matlab驗(yàn)證,導(dǎo)出上一章節(jié)設(shè)計(jì)的濾波器,使用一段真實(shí)的心電圖,人為加上工頻干擾,輸入濾波器,看濾波器輸出能否把干擾濾除。
導(dǎo)入心電圖:
%0.導(dǎo)入原始數(shù)據(jù) orig_x = load('D:\Documents\MATLAB\ecg_test.txt'); figure(1); subplot(4,1,1); plot(orig_x); title('原始信號(hào)');生成50Hz干擾信號(hào):
%1.生成噪聲信號(hào) fs = 50; %頻率 N = length(orig_x); %采樣點(diǎn)數(shù) dt = 1/250; %采樣間隔 n = dt:dt:N*dt; noise = 120*sin(2*pi*fs*n); subplot(4,1,2); plot(noise); title('噪聲信號(hào)');心電圖信號(hào)疊加干擾信號(hào):
%2.信號(hào)疊加 orig_x_add_noise = orig_x + noise; subplot(4,1,3); plot(orig_x_add_noise); title('疊加后的信號(hào)');最后一步,濾波:
%3.低通濾波處理 ld = notch_50Hz_boke; lp_output = filter(ld,orig_x_add_noise); subplot(4,1,4); plot(lp_output); title('陷波濾波后的信號(hào)');可以看到,原本心電信號(hào)是很干凈的,疊加了50Hz的干擾后,幾乎把信號(hào)全部淹沒了,但經(jīng)過陷波器濾波后,信號(hào)又恢復(fù)了原樣,說明濾波效果良好。
圖3 濾波形性能驗(yàn)證4.評(píng)價(jià)
本章節(jié),我們借助matlab設(shè)計(jì)了一個(gè)陷波器,并推導(dǎo)了濾波器的輸入/輸出數(shù)學(xué)模型,最后使用一個(gè)實(shí)例驗(yàn)證了濾波器的性能。本章節(jié)是使用IIR濾波來設(shè)計(jì)陷波器,其實(shí)目前這個(gè)陷波器濾波效果還不是最好的,目前可以使用另一種更高效的方式實(shí)現(xiàn)陷波器,就是使用自適應(yīng)濾波器來實(shí)現(xiàn),具體細(xì)節(jié)在其它章節(jié)會(huì)詳細(xì)講解。
?
總結(jié)
以上是生活随笔為你收集整理的心电图ECG常用滤波器之陷波器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常规心电图和动态心电图的区别
- 下一篇: Unity案例-实现心电图效果