Лабораторная работа 41 / MOTS_Lab#4
.doc
Министерство образования и науки РФ
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»
Кафедра Автоматики и Процессов Управления
Отчет по лабораторной работе № 4
«Цифровые фильтры»
Выполнили: Красовский Р.А.
Антонов В.В.
Группа: 3322
Факультет: КТИ
Кафедра: АПУ
Проверил: Канатов И.И.
Санкт – Петербург
2005
Цель работы
В рамках данной лабораторной работы необходимо смоделировать полосовые фильтры с параметрами:
Fs=2000 Hz
Fpass1=200
Fpass2=400
Fstop1=170
Fstop2=430
Значения амплитуды Astop1 и Astop2 примем равными 20.
Необходимо смоделировать следующие типы фильтров:
-
FIR (КИХ) – фильтр.
-
IIR (БИХ) – фильтр.
Ход выполнения работы
Примечание: для выполнения данной лабораторной работы (для формирования сигналов, проведения над ними математических операций, а также построения их графиков) будет использоваться математический пакет MathSoft ® MATLAB 7.0. (в особенности, компонент Filter Design & Analysis).
Рис 1. АЧХ и ФЧХ FIR - фильтра Equiripple с заданными параметрами.
Рис. 2. АЧХ и ФЧХ IIR - фильтра Баттерворта с заданными параметрами.
Моделирование FIR(КИХ) - фильтра
Подаем различные синусоиды и смотрим, проходят они через фильтр или нет.
t = 0:2*pi/1999:2*pi;
x = sin(100*t);
y = filter(num, 1, x);
Рис. 3. Синусоида sin(100t) на выходе FIR - фильтра Equiripple.
x = sin(200*t);
y = filter(num, 1, x);
Рис. 4. Синусоида sin(200t) на выходе FIR-фильтра Equiripple
x = sin(400*t);
y = filter(num, 1, x);
Рис. 5. Синусоида sin(400t) на выходе FIR-фильтра Equiripple.
x = sin(430*t);
y = filter(num, 1, x);
Рис. 6. Синусоида sin(430t) на выходе FIR-фильтра Equiripple.
Подаем сигналы частоты 0..1000 Гц и записываем пиковые значения, «вырезая» переходный процесс. После этого снимаем АЧХ FIR - фильтра.
for i = 0:1000
x = cos(i*t);
y = filter(num, 1, x);
ff(i+1) = max(y(500:1000));
end
Рис. 7. АЧХ FIR-фильтра Equiripple.
Рис. 8. ЛАЧХ FIR-фильтра Equiripple
Производим фильтрацию просто и с игнорированием ФЧХ фильтра.
t = 0:2*pi/1999:2*pi;
x = sin(200*t);
y = filter(num, 1, x);
Фильтрация с учетом ФЧХ КИХ - фильтра показана на Рис. 5.
y = filtfilt(num, 1, x);
Рис. 9. Фильтрация sin(200t) с игнорированием ФЧХ.
Наблюдается вырезание переходного процесса на НЧ при фильтрации без учета ФЧХ.
Моделирование IIR(БИХ) – фильтра Баттерворта
Для того, чтобы сработала функция преобразования матрицы SOS коэффициентов фильтра в передаточную функцию цифрового устройства, нам необходимо увеличить полосу пропускания фильтра. Пусть параметры фильтра будут такими: Fpass1=220, Fpass2=380, Fstop1=150, Fstop2=430.
Теперь можно проводить преобразование:
[num, denum] = SOS2tf(SOS, G);
y = filter(num, denum, x);
Посмотрим на синусоиду sin(200t), пропущенную через IIR –фильтр.
Рис. 10. Синусоида sin(200t) на выходе БИХ-фильтра Баттерворта
Наблюдается «сильный» переходный процесс, что обусловлено нелинейной ФЧХ БИХ-фильтра.
Отфильтруем ту же синусоиду с игнорированием ФЧХ фильтра.
y = filtfilt(num, denum, x);
Рис. 11. Синусоида sin(200t) без учета ФЧХ фильтра.
Из-за достаточно гладкой АЧХ наблюдается практически полное подавление сигнала. Нет влияния нелинейной ФЧХ.
Снимем АЧХ БИХ-фильтра на заданных диапазонах:
for i = 0:1000
x = cos(i*t);
y = filter(num, denum, x);
y = y*G;
ff(i+1) = max(y(500:1000));
end
Рис. 12. АЧХ БИХ-фильтра Баттерворта.
Рис. 13. ЛАЧХ БИХ-фильтра Баттерворта.
Создадим последовательность прямоугольных импульсов и отфильтруем ее на КИХ и БИХ фильтре:
x = zeros(1,2000);
for i=0:19
x(i*100+1:i*100+50) = 1;
end
Рис. 14. Спектр последовательности прямоугольных импульсов.
Фильтруем последовательность на КИХ-фильтре:
y1 = filter(num, 1, x);
Рис. 15. Последовательность прямоугольных импульсов на выходе КИХ-фильтра и ее спектр.
Отфильтруем теперь на БИХ-фильтре:
y2 = filter(num, denum, x);
Рис. 16. Последовательность прямоугольных импульсов на выходе БИХ-фильтра и ее спектр.
Вывод: выходной сигнал с КИХ-фильтра в общем и целом похож на исходный. Выход БИХ-фильтра сильно искажен из-за нелинейного сдвига по фазе. Но амплитудные спектры обоих выходов почти одинаковые.