|
Расчет цифровых фильтров с бесконечными импульсными характеристиками
Расчет цифровых фильтров с бесконечными импульсными характеристиками
Белорусский Государственный Университет Информатики и Радиоэлектроники Кафедра электронных вычислительных средств Отчёт по лабораторной работе "Расчет цифровых фильтров с бесконечными импульсными характеристиками" Выполнила: Студентка гр. 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('Lowpass Chebyshev Filter'); figure(2); subplot(211); [h,w]=freqs(b,a); plot(w,abs(h),'r'); title('Amplitude response'); subplot(212); plot(w,unwrap(angle(h)),'r'); title('Phase response'); Рисунок 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('Lowspass Chebyshev Filter'); figure(4); subplot(211); [h,w]=freqs(b1,a1); plot(w,abs(h),'m'); title('Amplitude response'); subplot(212); plot(w,unwrap(angle(h)),'m'); title('Phase response'); Рисунок 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('Bilinear Conversion'); 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: Рассчитайте цифровой ФВЧ с параметрами заданными для каждого варианта. Определить какой порядок будут иметь разные типы фильтров. Сравнить эффективность аппроксимаций при более жестких и более мягких требованиях к АЧХ. close all; clear all; clear all; 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 усечение коэффициентов передаточной функции до четырёх десятичных разрядов. До двух десятичных разрядов. close all; clear all; n = 4; fs = 1000; fc = 300; Rp = 1; Rs = 70; Wn = fc * 2 / fs; %%%%%%%%%%%%Butterworth%%%%%%%%%%% 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'); hold on; 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'); grid on; title('Amlitude response'); ylabel('Butterworth'); subplot(212); plot(f,angle(h), 'k'); hold on; plot(f,angle(h2), 'g'); plot(f,angle(h3), 'b'); plot(f,angle(h4), 'r'); grid on; title('Phase response'); ylabel('Butterworth'); %%%%%%%%%%%%Chebyshev1%%%%%%%%%%% 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'); hold on; 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'); grid on; title('Amlitude response'); ylabel('Chebyshev1'); subplot(212); plot(f,angle(h), 'k'); hold on; plot(f,angle(h2), 'g'); plot(f,angle(h3), 'b'); plot(f,angle(h4), 'r'); grid on; title('Phase response'); ylabel('Chebyshev1'); %%%%%%%%%%%%Elliptic%%%%%%%%%%%%% 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'); hold on; 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'); grid on; title('Amlitude response'); ylabel('Elliptic'); subplot(212); plot(f,angle(h), 'k'); hold on; plot(f,angle(h2), 'g'); plot(f,angle(h3), 'b'); plot(f,angle(h4), 'r'); grid on; title('Phase response'); ylabel('Elliptic'); Рисунок 15 - АЧХ и ФЧХ фильтра Баттерворта Рисунок 16 - АЧХ и ФЧХ фильтра Чебышева 1 рода Рисунок 17 - АЧХ и ФЧХ эллиптического фильтра Вывод: В результате выполненной лабораторной работы, были изучены фильтры НЧ и ВЧ и их типы. Программирование их в Matlab. Изучен метод билинейного z- преобразования для перевода фильтра из ВЧ в НЧ. Увидели, что при усечение коэффициентов происходит пропускание ненужных нам частот.
|
|