Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Завдання_ЦОЕД 2013_заочники.docx
Скачиваний:
6
Добавлен:
01.05.2025
Размер:
760 Кб
Скачать
☆

Лабораторная работа № 5 Расчет цифровых фильтров в среде matlab

Цель: Изучить возможные способы расчета цифровых фильтров в среде MATLAB.

В среде MATLAB цифровые фильтры можно рассчитать по меньшей мере тремя способами:

  1. в командном окне;

  2. с помощью пакета sptool;

  3. с помощью пакета fdatool.

5.1 Расчет цифровых фильтров в командном окне

5.1.1 Расчет коэффициентов нерекурсивного фильтра с помощью функции fir1.

Функция fir1 реализует вычисления по методу обратного преобразования Фурье с использованием окон:

a=fir1(n,Wn,’ftype’,window,’normalization’)

Здесь:

n – порядок фильтра – целое четное число (кол-во коэффициентов фильтра равно n+1);

Wn – относительная.частота среза (по отношению к частоте Найквиста, равной половине частоты дискретизации Fd) – число в диапазоне (0,1); является вектором из двух чисел, если фильтр полосовой или режекторный;

’ftype’ – тип фильтра (если отсутствует или ‘low’– ФНЧ; ‘high’ – ФВЧ; ‘bandpass’ – полосовой; ‘stop’ – режекторный;

window – вектор-столбец из n+1 элементов (по умолчанию применяется окно Хэмминга hamming(n+1));

‘normalization’ – нормировка АЧХ и ИПХ (по умолчанию значение ‘scale’ – единичное значение АЧХ в центре полосы пропускания; ‘noscale’ – нормировка не производится).

Пример:

window=rectwin(7) % синтез прамоугольного окна из 7 отсчетов

a=fir1(6,0.5,window) % расчет коэфф-в КИХ-фильтра с нормализацией

Результат:

a=[ -0.1148 0.0000 0.3443 0.5409 0.3443 0.0000 -0.1148]

Сравнивая эти результаты с рассчитанными вручную коэффициентами, нетрудно видеть разницу. Например, ручные расчеты дают , тогда как в MATLAB мы получили . Естественно предположить, что причиной тому проводимая по умолчанию нормировка ИПХ. Проверяем это предположение, задавая в программе значение ’noscale’ для параметра нормализации:

window=rectwin(7) % синтез прамоугольного окна из 7 отсчетов

a=fir1(6,0.5,window,’noscale’) % расчет коэфф-в КИХ-фильтра без нормализации

Результат:

a=[ -0.1061 0.0000 0.3183 0.5000 0.3183 0.0000 -0.1061]

5.1.2 Расчет коэффициентов и рекурсивного фильтра

Команда генерирования коэффициентов и рекурсивного фильтра Баттерворта:

[a,b] = butter(n,Wn,'ftype')

Смысл обозначений тот же, что и для нерекурсивного фильтра.

Если Wn является двухэлементным вектором, т.е. Wn = [w1 w2], функция butter возвращает коэффициенты полосового фильтр порядка 2n с полосой пропускания (или задерживания – для режекторных фильтров) w1 < w < w2.

5.1.3 Построение графиков ачх и фчх

Осуществляется командой

freqz(a,b)

или

freqz(a,b,N) % N – число отсчетов АЧХ и ФЧХ

Графики АЧХ и ФЧХ строятся в диапазоне 0 – 1 нормированных (по частоте Найквиста Fd/2) значений частоты частот (рисунок 5.1).

Рисунок 5.1 АЧХ и ФЧХ полосового фильтра Баттерворта 2-го порядка для w1=0.25, w2=0.5

      1. Построение графика ипх

Построение графика ИПХ осуществляется парой команд:

[h,t] = impz(a,b);

stem(t,h)

При этом в случае рекурсивного фильтра количество выводимых отсчетов ИПХ выбирается автоматически (рисунок 5.2).

Рисунок 5.2 ИПХ полосового фильтра Баттерворта 2-го порядка для w1=0.25, w2=0.5

Пара команд

[h,t] = impz(a,b,N); % N – число отсчетов ИПХ

stem(t,h)

позволяет вывести на график N отсчетов ИПХ.