БелорусскийГосударственный Университет
Информатики иРадиоэлектроники
Кафедраэлектронных вычислительных средств
Отчёт полабораторной работе
«Расчетцифровых фильтров с бесконечными импульсными характеристиками»
Выполнила:
Студенткагр. 610701
ЛыпкаЮ.А.
Проверил:
РодионовМ.М.
Минск 2009
Цель работы:Расчёт БИХ-фильтров с различными аппроксимациями идеальной АЧХ в пакете Matlabи изучение их свойств.
Задание №1:Рассчитайте аналоговый фильтр-прототип НЧ в соответствии с вариантом (вариант№8). Для полученного фильтра постройте его АЧХ, ФЧХ а также диаграмму нулей иполюсов.
Фильтр Чебышева 1 рода,4 порядка.
n=4;
Rp=1;
[z,p,k]=cheb1ap(n,Rp);
[b,a]=zp2tf(z,p,k);
figure(1);
zplane(z,p);
title('LowpassChebyshev Filter');
figure(2);
subplot(211);
[h,w]=freqs(b,a);
plot(w,abs(h),'r');
title('Amplituderesponse');
subplot(212);
plot(w,unwrap(angle(h)),'r');
title('Phaseresponse');
/>
Рисунок 1 – Диаграмманулей и полюсов
/>
Рисунок 2 – АЧХ и ФЧХ фильтраНЧ вида Чебышева 1 рода
Задание №2: Преобразоватьполученный фильтр- прототип в фильтр заданного вида с требуемыми частотамисреза (Вариант 8- 650Гц). Постройте графики АЧХ, ФЧХ и диаграмму нулей иполюсов.
fs=650;%частота среза
[b1,a1]=lp2lp(b,a,fs);
[z1,p1,k1]=tf2zp(b1,a1);
figure(3);
zplane(z1,p1);
title('LowspassChebyshev Filter');
figure(4);
subplot(211);
[h,w]=freqs(b1,a1);
plot(w,abs(h),'m');
title('Amplituderesponse');
subplot(212);
plot(w,unwrap(angle(h)),'m');
title('Phaseresponse');
/>
Рисунок 3 – Диаграмманулей и полюсов
/>
/>
Рисунок 4 – АЧХ и ФЧХ фильтраНЧ вида Чебышева 1 рода
Задание №3: Используяфункцию Matlab bilinear, которая реализует метод билинейного z- преобразования,получите дискретизированный аналог фильтра из предыдущего задания. ПостройтеАЧХ, ФЧХ, групповую задержку и диаграмму нулей и полюсов полученного фильтра.
Fs=2600;
[zt,pt,kt]=bilinear(z1,p1,k1,Fs);
[bt,at]=zp2tf(zt,pt,kt);
figure(5)
zplane(zt,kt);
title('BilinearConversion');
figure(6);
subplot(311);
[h,w]=freqz(bt,at)
plot(w,abs(h),'g');
subplot(312);
plot(w,unwrap(angle(h)),'g');
subplot(313);
grpdelay(bt,at,64,Fs);%%%групповаязадержка
/>
Рисунок 5 – Диаграмманулей и полюсов
/>
Рисунок 6 – АЧХ, ФЧХ игрупповая задержка фильтра
Задание №4:Рассчитайте цифровой ФВЧ с параметрами заданными для каждого варианта.Определить какой порядок будут иметь разные типы фильтров. Сравнитьэффективность аппроксимаций при более жестких и более мягких требованиях к АЧХ.
closeall;
clearall;
clearall;
Wp= 0.4; % нормированная граничная частота подавления
Ws= 0.7; % нормированная граничная частота пропускания
Rp= 0.5; % допустимая неравномерность в полосе пропускания
Rs= 70; % минимальное затухание в полосе подавления
ФильтрБаттерворта
[n1,Wn1] = buttord(Wp, Ws, Rp, Rs);
sprintf('battervorta — %d',n1)
[z,p,k]= butter(n1,Wn1,'high');
[b,a]=zp2tf(z,p,k);
figure;
zplane(z,p);
figure;
title('battervorta');
freqs(z,p);
ФильтрЧебышева 1 рода
[n2,Wn2] = cheb1ord(Wp, Ws, Rp, Rs);
[z,p,k]= cheby1(n2,Rp,Wn2,'high');
[b,a]=zp2tf(z,p,k);
figure;
zplane(z,p);
figure;
freqs(z,p);
ФильтрЧебышева2 рода
[n3,Wn3] = cheb2ord(Wp, Ws, Rp, Rs);
[z,p,k]= cheby2(n3,Rs,Wn3,'High');
[b,a]=zp2tf(z,p,k);
figure;
zplane(z,p);
figure;
freqs(z,p);
ФильтрЭллиптический
[n4,Wn4] = ellipord(Wp, Ws, Rp, Rs);
[z,p,k]= ellip(n4,Rp,Rs,Wn4,'high');
[b,a]=zp2tf(z,p,k);
figure;
zplane(z,p);
figure;
freqs(z,p);
sprintf('chebysheva1 — %d',n2)
sprintf('chebysheva2 — %d',n3)
sprintf('elipticheskiy — %d',n4)
/>
Рисунок 7– Диаграмманулей и полюсов фильтра Баттерворта
/>.
Рисунок 8– АЧХ, ФЧХфильтра Баттерворта
/>
Рисунок 9– Диаграмманулей и полюсов фильтра Чебышева 1 рода
/>
Рисунок 10– АЧХ, ФЧХфильтра Чебышева 1 рода
/>
Рисунок 11– Диаграмманулей и полюсов фильтра Чебышева 2 рода
/>
Рисунок 12– АЧХ, ФЧХфильтра Чебышева 2 рода
/>
Рисунок 13– Диаграмманулей и полюсов эллиптического фильтра
/>
Рисунок 14– АЧХ, ФЧХ эллиптическогофильтра
Задание №5: Исследуйтекак скажется на АЧХ и ФЧХ фильтров из заданий 1-3 усечение коэффициентовпередаточной функции до четырёх десятичных разрядов. До двух десятичныхразрядов.
closeall;
clearall;
n= 4;
fs= 1000;
fc= 300;
Rp= 1;
Rs= 70;
Wn= fc * 2 / fs;
figure;
[b,a] = butter(n, Wn);
[h,f] = freqz(b, a, 1024, fs);
b= round(b * 10000) / 10000;
a= round(a * 10000) / 10000;
[h2,f] = freqz(b, a, 1024, fs);
b= round(b * 1000) / 1000;
a= round(a * 1000) / 1000;
[h3,f] = freqz(b, a, 1024, fs);
b= round(b * 100) / 100;
a= round(a * 100) / 100;
[h4,f] = freqz(b, a, 1024, fs);
subplot(211);
plot(f,20 * log10(abs(h)), 'k');
holdon;
plot(f,20 * log10(abs(h2)), 'g');
plot(f,20 * log10(abs(h3)), 'b');
plot(f,20 * log10(abs(h4)), 'r');
legend('Ideal','4 categories', '3 categories', '2 categories');
gridon;
title('Amlituderesponse');
ylabel('Butterworth');
subplot(212);
plot(f,angle(h),'k');
holdon;
plot(f,angle(h2),'g');
plot(f,angle(h3),'b');
plot(f,angle(h4),'r');
gridon;
title('Phaseresponse');
ylabel('Butterworth');
figure;
[b,a] = cheby1(n, Rp, Wn);
[h,f] = freqz(b, a, 1024, fs);
b= round(b * 10000) / 10000;
a= round(a * 10000) / 10000;
[h2,f] = freqz(b, a, 1024, fs);
b= round(b * 1000) / 1000;
a= round(a * 1000) / 1000;
[h3,f] = freqz(b, a, 1024, fs);
b= round(b * 100) / 100;
a= round(a * 100) / 100;
[h4,f] = freqz(b, a, 1024, fs);
subplot(211);
plot(f,20 * log10(abs(h)), 'k');
holdon;
plot(f,20 * log10(abs(h2)), 'g');
plot(f,20 * log10(abs(h3)), 'b');
plot(f,20 * log10(abs(h4)), 'r');
legend('Ideal','4 categories', '3 categories', '2 categories');
gridon;
title('Amlituderesponse');
ylabel('Chebyshev1');
subplot(212);
plot(f,angle(h),'k');
holdon;
plot(f,angle(h2),'g');
plot(f,angle(h3),'b');
plot(f,angle(h4),'r');
gridon;
title('Phaseresponse');
ylabel('Chebyshev1');
figure;
[b,a] = ellip(n, Rp, Rs, Wn);
[h,f] = freqz(b, a, 1024, fs);
b= round(b * 10000) / 10000;
a= round(a * 10000) / 10000;
[h2,f] = freqz(b, a, 1024, fs);
b= round(b * 1000) / 1000;
a= round(a * 1000) / 1000;
[h3,f] = freqz(b, a, 1024, fs);
b= round(b * 100) / 100;
a= round(a * 100) / 100;
[h4,f] = freqz(b, a, 1024, fs);
subplot(211);
plot(f,20 * log10(abs(h)), 'k');
holdon;
plot(f,20 * log10(abs(h2)), 'g');
plot(f,20 * log10(abs(h3)), 'b');
plot(f,20 * log10(abs(h4)), 'r');
legend('Ideal','4 categories', '3 categories', '2 categories');
gridon;
title('Amlituderesponse');
ylabel('Elliptic');
subplot(212);
plot(f,angle(h),'k');
holdon;
plot(f,angle(h2),'g');
plot(f,angle(h3),'b');
plot(f,angle(h4),'r');
gridon;
title('Phaseresponse');
ylabel('Elliptic');
/>
Рисунок 15 – АЧХ и ФЧХфильтра Баттерворта
/>
Рисунок 16 – АЧХ и ФЧХфильтра Чебышева 1 рода
/>
Рисунок 17 – АЧХ и ФЧХэллиптического фильтра
Вывод: Врезультате выполненной лабораторной работы, были изучены фильтры НЧ и ВЧ и ихтипы. Программирование их в Matlab. Изучен метод билинейного z- преобразованиядля перевода фильтра из ВЧ в НЧ. Увидели, что при усечение коэффициентовпроисходит пропускание ненужных нам частот.