Висновки
В результаті виконання курсового проекту був спроектований цифровий фільтр для очистки сигналу від завади. Було знайдено найбільш оптимальне рішення цієї задачі при послідовному зєднанні фільтрів. Найменша середньоквадратична похибка дорівнювала 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()
- Вступ
- 1 Аналіз початкових даних, ідеального та вхідного сигналів
- 1.1 Аналіз завдання
- 1.2 Аналіз вхідного сигналу, ідеального сигналу та шуму
- 2 Обгрунтування вибору фільтрів та алгоритму обробки вхідного сигналу
- 2.1 Обгрунтування вибору фільтрів
- 2.2 Послідовне ввімкнення фільтрів
- 2.2.1 Вибір ФНЧ.
- 2.2.2 Вибір режекторного фільтра
- Висновки