logo
Проектування блоку обробки сигналів

Висновки

В результаті виконання курсового проекту був спроектований цифровий фільтр для очистки сигналу від завади. Було знайдено найбільш оптимальне рішення цієї задачі при послідовному зєднанні фільтрів. Найменша середньоквадратична похибка дорівнювала 0.0662035. Отримані фільтри можна використовувати, написавши відповідну програму.

Список викорикористаної літератури

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()