Смекни!
smekni.com

Проектування блоку обробки сигналів (стр. 2 из 2)

1. В. Дьяконов MatLab. Обработка сигналов и изображений. Специальный справочник. – СПб.:Питер, 2002.

2. Л. М. Гольденберг, Б.Д.Матюшкин, М.Н.Поляк. Цифровая обработка сигналов:Справочник . М.:Радио и связь, 1985.

3. http://matlab.exponenta.ru/default.php

4. Internet

Додаток

Лістінг програми при послідовному ввімкненні фільтрів:

clear all

clc

loadmatfile('kasE.mat')

//scf(1)

//plot(ys)

//xgrid()

//

scf(2)

plot(f(1:n2),amp(1:n2))

xgrid()

//

//scf(3)

//subplot(211), plot(ys), xgrid()

//subplot(212), plot(s_in), xgrid()

//subplot(111)

//yvx=s_in;

//

//scf(4)

//plot(yvx)

//xgrid()

//

//scf(5)

//subplot(211), plot(psi), xgrid()

//subplot(212), plot(f(1:n2),ampsi(1:n2)), xgrid()

//subplot(111)

//

//y=fft(s_in);amp=abs(y);

//scf(6)

//plot(f(5:n2),amp(5:n2))

//xgrid()

N=length(s_in);

T=0.8;

f_discr=N/T;

T_discr=1/f_discr;

frq_s=0:f_discr/2;

ft=frq_s*T_discr;

//fcc=250;

// oshibka mejdu idealnim i vhodnim signalom

err0=0;

for n=1:(N),

err0=err0+(ys(n)-s_in(n))^2;

end

err0=sqrt(err0/n);

//ФНЧ;

www=250/f_discr;

//zz_t=iir(4,'lp','butt',[www www],[0 0]);

zz_t=iir(4,'lp','cheb1',[www www],[0.1 0]);

//zz_t=iir(4,'lp','cheb2',[www www],[0 0.1]);

//zz_t=iir(4,'lp','ellip',[www www],[0.1 0.1]);


sz_t=syslin('d',zz_t);

Hz_t=freq(sz_t.num,sz_t.den,exp(%i*2*%pi*ft));

ampz_t=abs(Hz_t);

phiz_t=atan(imag(Hz_t),real(Hz_t));

scf(10)

subplot(211)

plot2d(frq_s,ampz_t,logflag="ln")

xgrid()

subplot(212)

plot2d(frq_s,phiz_t,logflag="ln")

xgrid()

yf_out=flts(s_in,sz_t);

scf(11)

subplot(211), plot(yf_out), xgrid()

subplot(212), plot(s_in), xgrid()

scf(12)

ach=abs(fft(yf_out));

plot2d(frq_s,ach(1:641)), xgrid()

err1=0;

for n=3:(N-2),

err1=err1+(ys(n-2)-yf_out(n+2))^2;

end

err1=sqrt(err1/n);

//Режекторный фильтр;

www1sr=46.7/f_discr;

www2sr=48/f_discr;

//zz_tsr=iir(4,'sb','butt',[www1sr www2sr],[0.5 0]);

//zz_tsr=iir(4,'sb','cheb1',[www1sr www2sr],[0.5 0]);

zz_tsr=iir(4,'sb','cheb2',[www1sr www2sr],[0 0.5]);

//zz_tsr=iir(4,'sb','ellip',[www1sr www2sr],[0.5 0.3]);

sz_tsr=syslin('d',zz_tsr);

Hz_tsr=freq(sz_tsr.num,sz_tsr.den,exp(%i*2*%pi*ft));

ampz_tsr=abs(Hz_tsr);

phiz_tsr=atan(imag(Hz_tsr),real(Hz_tsr));

scf(13)

subplot(211)

plot2d(frq_s,ampz_tsr,logflag="ln")

xgrid()

subplot(212)

plot2d(frq_s,phiz_tsr,logflag="ln")

xgrid()

yf_out2=yf_out;

yf_out2=flts(yf_out2,sz_tsr);

scf(14)

subplot(211), plot(yf_out2), xgrid()

subplot(212), plot(s_in), xgrid()

err2=0;

for n=4:(N-3),

err2=err2+(ys(n-2)-yf_out2(n+2))^2;

end

err2=sqrt(err2/n);

scf(16)

ach2=abs(fft(yf_out2));

plot2d(frq_s,ach2(1:641)), xgrid()

err3=0;

for n=4:(N-3),

err3=err3+(ys(n-2)-yf_out2(n+2))^2;

end

err3=sqrt(err3/n);

ampz_t_ok=1:641;

for i=1:(length(ampz_t_ok)),

ampz_t_ok(i)=ampz_tsr(i)*ampz_t(i);

end

scf(17)

plot2d(frq_s,ampz_t_ok,logflag="ln")

xgrid()

scf(18)

subplot(311), plot2d(frq_s(1:400),ampz_t_ok(1:400),logflag="ln"),xgrid()

subplot(312), plot2d(f(1:400),ampsi(1:400),logflag="ln"), xgrid()

//subplot(413), plot2d(f(1:400),amp(1:400),logflag="ln"), xgrid()

subplot(313), plot2d(frq_s(1:400),ach2(1:400),logflag="ln"), xgrid(), xgrid()