Изучение характеристик сигналов электроэнцефалографических, электромиографических, реографических и электрокардиографических исследований, страница 24

xtitle('АЧХ идеального фильтра','Частота дискретизации (Гц)','');set(gca(),"grid",[1 1])

else

fi=[0 x_ot x_ot x_do x_do fd/2]//ачх идеального фильтра

a=[1 1 0 0 1 1]

figure()

plot(fi,a)

xtitle('АЧХ идеального фильтра','Частота дискретизации (Гц)','');set(gca(),"grid",[1 1])

end

fdesign='butt'//БИХ фильтр баттеворта

delta =[0.01 .02]

hz1=iir(n,ftype,fdesign,frq,delta)

[hm,fr]=frmag(hz1,L)

figure()//ачх

plot(fr*fd,hm)

xtitle('АЧХ','Частота дискретизации (Гц)','');set(gca(),"grid",[1 1])

//фильтрование сигнала=========================================

sl= tf2ss(hz1)

y = flts(s,sl)

figure();

plot(t,y);

xtitle('Фильтрованый сигнал - БИХ фильтр','Длительность реализации (с)','Сигнал (В)');set(gca(),"grid",[1 1])

imprep=flts(eye(1,M),sl)//импульсная характеристика

figure()

plot(t,imprep)

xtitle('Импульсная характеристика','Длительность реализации (c)','Сигнал (В)');set(gca(),"grid",[1 1])

figure()//карта нулей и полюсов

plzr(hz1)

//q=poly(0,'q')

//hzd=horner(hz1,1/q)

endfunction

6.6. Функция фильтрации с помощью КИХ фильтра

function [y,b]=fun_filter_kix(s,fd,Tmax,dT,ft,n,fh,fl,t)//фильт

M=fix(Tmax/dT)+1 //количество отсчетов в исходном сигнале

L=fix((M)/2); //количество отсчетов частотной характеристики

df=1/Tmax;

//============_идеальная_ачх_=================================

fi=[0 fl*fd fl*fd fh*fd fh*fd fd/2]//ачх идеального фильтра

a=[0 0 1 1 0 0]

figure()

plot(fi,a)

xtitle('АЧХ идеального фильтра','Частота дискретизации','');set(gca(),"grid",[1 1])

//фильтрование сигнала=========================================

ft="bp"//полосовой фильтр

[b]=ffilt(ft,n,fl,fh)

figure()

plot(b);   //импульсная характеристика

xtitle('Импульсная характеристика')

set(gca(),"grid",[1 1])

[hm,fr]=frmag(b,L);   //ачх

figure();

plot(fr*fd,hm);

xtitle('АЧХ','Частота дискретизации (Гц)','')

set(gca(),"grid",[1 1])

//передаточная функция

hzq=poly(b,'q','coeff');

z=poly(0,"z") //простой полином

hz=horner(hzq,1/z)//вычисление значения полинома при q=1/z

s101=tf2ss(hz)

y=flts(s,s101)

figure();

plot(t,y);

xtitle('Фильтрованый сигнал - КИХ фильтр','Длительность реализации (с)','Сигнал - (В)')

set(gca(),"grid",[1 1])

stprep=flts(ones(1,M),s101)//переходная характеристика

figure();

plot(t,stprep);

xtitle('Переходная характеристика','Длительность реализации (с)','')

set(gca(),"grid",[1 1])

//карта нулей полюсов

figure()

plzr(hz)//устойчивость фильтра

endfunction

6.7. Функция сжатия – метод дискретных отсчетов

function [nf,Y1S]=fun_cravnen_diskr_otsch(d,s)

Y11=fix(s/d)*d+d/2

Y1S=Y11(1)

nf=1

for i=2:length(Y11)

if Y11(i)==Y1S(length(Y1S)) then

nf(length(nf))=nf(length(nf))+1

else

Y1S=[Y1S Y11(i)]

nf=[nf 1]

end

end

endfunction

6.8. Функциясжатияметодэкстраполяциинулевогопорядка

function [nf,Y2]=fun_enp(d,Y)//ЭНП

Y2=Y(1)

nf=1

Y20=Y(1)

for i=2:length(Y)

if ((Y(i))>=(Y20-d/2)) & (Y(i)<=(Y20+d/2)) then

nf(length(nf))=nf(length(nf))+1

else Y20=Y(i)

Y2=[Y2 Y(i)]

nf=[nf 1]

end

end

endfunction

6.9. Функциясжатияметодинтерполяциинулевогопорядка

function [nf,Y3]=fun_inp(d,Y)//ИНП

Y3=Y(1);

nf=1

j=1 //nomer pervogo otscheta v cegmente

for i=2:length(Y)

if max(Y(j:i))-min(Y(j:i))<=d then

Y3(length(Y3))=(max(Y(j:i))+min(Y(j:i)))/2

nf(length(nf))=nf(length(nf))+1

else

j=i

Y3=[Y3 Y(i)]

nf=[nf 1]

end

end

endfunction

6.9. Функция восстановления сжатого сигнала

function [SV,sigma,sigmaCK]=fun_vosstanovl(y,nf,t,s1)

SV=[]

for i=1:length(y)

for j=1:nf(i)

SV=[SV y(i)]

end

end

figure()

plot(t,SV)

set(gca(),"grid",[1 1])

xtitle('восстановленный сигнал', 'Длительность реализации (с)', 'Сигнала (с)')