ЛР7 > Проектирование цифровых фильтров
Цель работы: научиться проектировать цифровые фильтры, анализировать их характеристики.
Руководство по лабораторной работе
Для выполнения лабораторной работы Вам необходимо повторить материалы соответствующих лекций.
Скачать Материалы к лабораторной работе №7.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Под проектированием (или синтезом) цифрового фильтра понимается выбор таких наборов коэффициентов {ai} и {bi}, при которых характеристики получающегося фильтра удовлетворяют заданным требованиям. В MatLab имеется более двадцати функций синтеза дискретных фильтров. Кроме того, в пакете Signal Processing имеется программа FDATool (Filter Design and Analysis Tool), реализующая графический интерфейс для расчета фильтров и просмотра их характеристик.
В зависимости от способа реализации, фильтры разделяются на фильтры с конечной импульсной характеристикой (КИХ-фильтры) и фильтры с бесконечной импульсной характеристикой (БИХ-фильтры).
В общем виде, любой фильтр описывается своей передаточной характеристикой (отношением отклика фильтра на входной сигнал):
, где
H(z) – передаточная характеристика фильтра, Y(z) – выходной сигнал фильтра, X(z) – входной сигнал фильтра. Подставив в данное выражение значения коэффициентов фильтра, получим следующую форму записи передаточной характеристики:
- для БИХ-фильтров:
- для КИХ-фильтров (передаточная характеристика совпадает с импульсной характеристикой фильтра):
, где
m и n – количество коэффициентов фильтра (максимальное из этих значений определяет порядок фильтра), z-n – элемент задержки сигнала на n отсчетов, bm – коэффициенты фильтра, связанные с отсчетами входного сигнала, an – коэффициенты фильтра, связанные с отсчетами выходного сигнала.
Для расчета коэффициентов БИХ-фильтра в MatLab используются следующие встроенные функции:
- butter(n, w0, type) – расчет фильтров Баттерворта;
- cheby1(n, Rp, w0, type) – расчет фильтров Чебышева первого рода;
- cheby2(n, Rs, w0, type) – расчет фильтров Чебышева второго рода;
- ellip(n, Rp, Rs, w0, type) – расчет эллиптических фильтров;
- bessel(n, w0) – расчет фильтров Бесселя (только ФНЧ).
Данные функции позволяют рассчитать коэффициенты {ai} и {bi}. Параметры вызова данных функций следующие: n – порядок фильтра, Rp – уровень пульсаций АЧХ в полосе пропускания (в децибелах), Rs – уровень пульсаций АЧХ в полосе подавления (в децибелах), w0 – частота среза фильтра (для полосовых и режекторных фильтров задается двухмерным вектором [w1 w2]), type – тип проектируемого фильтра (ФНЧ, ФВЧ, ПФ или РФ).
Для расчета коэффициентов КИХ-фильтра в MatLab используется встроенная функция fir1(n, Wn, ‘ftype’, ‘window’, ‘normalization’), где n – порядок фильтра, Wn – частота среза фильтра (для полосовых и режекторных фильтров задается двухмерным вектором [w1 w2]), ‘ftype’ – тип проектируемого фильтра (ФНЧ, ФВЧ, ПФ или РФ). Параметр ‘window’ задает используемое при синтезе окно. Это должен быть вектор-столбец, содержащий n+1 элементов. По умолчанию используется окно Хэмминга, рассчитываемое путем вызова функции hamming(n+1). Для вызова других окон используются функции:
- blackman – окно Блэкмена;
- kaiser – окно Кайзера;
- chebwin – окно Чебышева.
Строковый параметр ‘normalization’ управляет нормировкой (масштабированием) рассчитанной импульсной характеристики фильтра. По умолчанию используется значение ‘scale’, при котором импульсная характеристика нормируется так, чтобы обеспечить единичное значение (0 дБ) коэффициента передачи в центре полосы пропускания.
Чтобы получить импульсную характеристику, необходимо подать на вход фильтра единичный отсчет, дополненный некоторым количеством нулей. Для удобства такой расчет реализован в функции impz(b, a). Входными аргументами для нее являются b и a – коэффициенты полиномов числителя и знаменателя передаточной функции фильтра.
Амплитудно-частотная характеристика дискретного фильтра рассчитывается с помощью функции freqz(b, a). Фазо-частотная характеристика – с помощью функции angle(h).
Основная функция, реализующая дискретную фильтрацию в MatLab, носит имя filter. В простейшем виде она имеет следующий синтаксис:
filter(b, a, x), где b – вектор коэффициентов нерекурсивной части фильтра (числителя функции передачи), a – вектор коэффициентов рекурсивной части фильтра (знаменателя функции передачи), x – входной сигнал.
Рассмотрим пример реализации полосового КИХ-фильтра с окном Хана. Частота дискретизации – 20 КГц, полоса пропускания фильтра – от 3 до 5 КГц, порядок фильтра – 20. Для заданных характеристик фильтра рассчитаем оконную функцию, коэффициенты фильтра, его импульсную и частотные характеристики. Программа расчета представлена ниже.
Fd=20e3;% частота дискретизации
W1=3e3/(0.5*Fd);%нижняя частота полосового фильтра 3КГц
W2=5e3/(0.5*Fd);%верхняя частота полосового фильтра 5КГц
f=0:10e3;%полоса частот до частоты Найквиста
n=20;%порядок фильтра
k=hann(n+1);%расчет окна Ханна
b=fir1(n, [W1 W2], k);%расчет коэффициентов фильтра
hi=impz(b, 1);%расчет импульсной характеристики
subplot(2, 1, 1); stem(hi); grid on%вывод ипм. хар-ки
subplot(2, 1, 2); plot(k); grid on%вывод окна
h =freqz(b, 1, f, Fd);%расчет АЧХ фильтра
figure
plot(f, abs(h))%вывод АЧХ
grid on
xlabel(‘Frequency, Hz’)
legend (‘Frequency responce’)
tau_phase=unwrap(angle(h));%расчет ФЧХ фильтра
figure
plot(f, tau_phase)%вывод ФЧХ
grid on
ylabel(‘Phase, rad’)
xlabel(‘Frequency, Hz’)
legend (‘Phase responce’)
Результаты расчета оконной функции и импульсной характеристики фильтра представлены на рисунке 1.
Рисунок 1. Импульсная характеристика и оконная функция фильтра.
Амплитудно-частотная характеристика фильтра представлена на рисунке 2.
Рисунок 2. Амплитудно-частотная характеристика фильтра.
Фазо-частотная характеристика фильтра представлена на рисунке 3.
Рисунок 3. Фазо-частотная характеристика фильтра.
ЗАДАНИЕ
-
Проработайте самостоятельно основные команды, изложенные в теоретической части, в пакете MATLAB.
2. Для созданного в примере фильтра сгенерируйте тестовый сигнал и проверьте работу фильтра (функция filter).
3. Самостоятельно рассчитайте и проверьте работу ФВЧ КИХ-фильтра с окном Хэмминга, с частотой среза 4 КГц. Постройте его импульсную и частотные характеристики.
4. С помощью команды fdatool откройте программу FDATool. Ознакомьтесь с ее возможностями. Спроектируйте с помощью данной программы режекторный БИХ-фильтр (параметры фильтра задайте самостоятельно).