%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % ZZS - 13.cvičení: Biologické signály % R.Čmejla, 15.prosince 2014 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% ------------------------------------------------------------------- Pan-Tompkinsonův algoritmus nalezení QRS PP --> diff(x) --> x2 --> MA --> práh 1. filtrace [b,a] = butter(2, [4 30]/(fs/2)); % filtrace mezi 4 a 30 Hz 2. diferenciace 3. umocnění - zvýraznění větších hodnot signálu a potlačení malých hodnot signálu 4. vyhlazení MA filtrem 5. prahování 6. detekce R špiček ------------------------------------------------------------------- function r=spicky(signal,fs) % Implementace algoritmu pro detekce QRS komplexu v EKG signalu % fs vzorkovaci kmitocet % R.Cmejla pro BSG, 2008 signal= signal-mean(signal); % odstraneni ss slozky N = length(signal); % delka signalu x_osa = [1:length(signal)]./fs; % horizontalni osa [b,a] = butter(2, [4 30]/(fs/2)); % pasmova filtrace mezi 4 a 30 Hz signalf = (filtfilt(b,a,signal)); % filtrace s nulovym fazovym posunem sig_dif=[diff(signalf);0]; % diferenciace EKG signalu sig_2 = (sig_dif).^2; % umocneni signalu sig_ma = filtfilt([ones(1,160)/160],1,sig_2);% 32-bodovy klouzavy prumer prah = mean(sig_ma); kpp=find(diff(sig_ma>prah)==1); kpn=find(diff(sig_ma>prah)==-1); if kpp(1) vyšší harmonické; - IIR filtry: Butterworthovy filtry, Čebyševovy filtry, … - FIR filtry: požadavek na velmi úzké zadržované frekvenční pásmo vede k použití filtrů s velkým počtem vzorků impulsových odezev (nad 100 vzorků při fvz= 500 Hz) -- - úzkopásmové filtry – bikvády R = 1; r = 0.98; b = [1 -2*R*cos(2*pi*f0/fs) R*R]; a = [1 -2*r*cos(2*pi*f0/fs) r*r]; - hřebenový FIR filtr pro potlačení brumu b = 0.5* [1 0 0 0 0 1] % pro fs = 500 Hz b = 0.5*[1 0 1]; % pro fs = 200 Hz b = 0.5* [1 0 0 0 0 1] % pro fs = 500 Hz b = 0.5*[1 0 1]; % pro fs = 200 Hz freqz(0.5* [1 zeros(1,9) 1],1,1000,1000) freqz(0.5* [1 zeros(1,4) 1],1,1000,500) freqz(0.5* [1 zeros(1,1) 1],1,1000,200) - adaptivní filtry % Adaptive Noice Canceling - ANC LMS, FIR: W(n+1)=W(n)+2µ.e(n).x(n) požadujeme: rychlou konvergenci; robustnost vůči šumu; malé výpočetní nároky ----- Potlačení izoelektrické linie - jednoduchá horní propust 2.řádu [b,a] = butter(2,0.5/(fs/2),'high') - nelineární filtr xd=decimate(ecg,round(fs/20),'fir'); lbx=medfilt1(xd,10); lb=interp(lbx,round(fs/20)); z=ecg-lb(1:length(ecg)); - hřebenové FIR filtry (společné odstranění driftu s brumem) freqz(0.5* [1 zeros(1,19) -1],1,1000,1000) freqz(0.5* [1 zeros(1,9) -1],1,1000,500) freqz(0.5* [1 zeros(1,4) -1],1,1000,250) freqz(0.5* [1 zeros(1,3) -1],1,1000,200) ----- Odstranění vyšších frekvenčních složek, filtrace myopotenciálů - překrývání spekter rušení a užitečného signálu - dolní propust, Butterworth - klouzavé průměry - průměrování