Передаточная функция цифрового ких-фильтра представляется в виде
|
, |
(33) |
где импульсная характеристика имеет длительность N. Если импульсная характеристика цифрового КИХ-фильтра удовлетворяет следующему условию:
|
h(n)=h(N–l–n), |
(34) |
для n=0, 1, ..., (N/2)–1, когда N четное, и для n=0, 1,..., (N–1)/2, когда N нечетное, то цифровой фильтр будет обладать линейной фазовой характеристикой.
В большинстве случаев именно потребность в линейной фазе или постоянном групповом времени вызывает необходимость применения цифровых КИХ-фильтров.
1. Метод частотной выборки.
Заданный уравнением (33) цифровой КИХ-фильтр имеет эквивалентное ДПФ-преобразование вида:
|
, |
(35) |
где – в действительности дискретизированная N-точечная частотная характеристика цифрового фильтра с равномерно расположенными отсчетами. Вследствие этого импульсная характеристика h(n) и передаточная функция Н(z) цифрового КИХ-фильтра определяется через ДПФ (35) таким образом:
|
(36) |
|
и . |
(37) |
Уравнение (37) является основным при расчете цифрового КИХ-фильтра.
Предположим, что частотная характеристика Hd(ej) задана для частот–<<. Это означает, что она определена и для всех частот . Процедура расчета должна давать значения , т. е. дискретизированную N-точечную требуемую частотную характеристику с равномерным расположением отсчетов:
|
, при =2k/N, |
(38) |
где k=0, 1, 2, …, N–1. Используя непосредственно данные соотношения (38), можно получить подходящую КИХ-передаточную функцию из уравнения (37). Эта методика обеспечивает совпадение полученной и требуемой частотных характеристик в точках дискретизации =2k/N для k=0, 1, 2,..., N–l.
2. Метод взвешивания.
Поскольку частотная характеристика Н(еj) любого цифрового фильтра представляет собой периодическую функцию частоты , она имеет разложение в ряд Фурье:
|
, |
(39) |
где . |
(40) |
Очевидно, что коэффициенты ряда Фурье h(n) фактически представляют собой импульсную характеристику цифрового фильтра.
Одним из возможных способов получения цифровых КИХ-фильтров, аппроксимирующих функцию Н(еj), является усечение бесконечного ряда (39) до конечного числа членов. Однако из хорошо известного явления Гиббса следует, что усечение бесконечного ряда вызывает выбросы и колебания в требуемой частотной характеристике до и после любой точки разрыва. Кроме того, величина этих выбросов и колебаний не уменьшается с увеличением длины последовательности при условии сохранения ее конечности. Это по существу означает, что прямое усечение уравнения (39) для получения аппроксимации цифрового КИХ-фильтра не обеспечивает хороших результатов.
Метод взвешивания используется для получения конечных весовых последовательностей w(n), называемых окнами, которые модифицируют коэффициенты Фурье в уравнении (39) для получения требуемой импульсной характеристики hd(n) конечной длительности, где:
|
hd(n)=h(n)w(n), |
(41) |
а w(n) – последовательность конечной длительности, т. е. w(n)=0 для n>N и n<0. Из соотношения (41) следует, что результирующая импульсная характеристика hd(n) также имеет протяженность N отсчетов.
Поскольку умножение двух последовательностей во временной области эквивалентно свертке двух частотных характеристик в частотной области, метод взвешивания обеспечивает сглаживание выбросов первоначальной частотной характеристики, т. е. подавление ее отклонений и пульсаций. Недостатком является расширение переходной полосы.
Для завершения этого подраздела приведем некоторые характерные функции окна:
а) прямоугольное окно:
б) окно Бартлетта или треугольное окно:
в) окно Ханна:
Как и в случае аналоговых фильтров, цифровые БИХ-фильтры не могут обеспечить совершенные линейные фазовые характеристики. В противоположность им цифровые КИХ-фильтры могут быть рассчитаны для обеспечения линейных фазовых характеристик. Кроме того, цифровые КИХ-фильтры всегда устойчивы. Это положительные качества цифровых КИХ-фильтров. К отрицательным чертам относится то, что исполнение цифрового КИХ-фильтра требует большего числа вычислений и большего числа цифровых элементов. Однако во многих ситуациях требуются цифровые КИХ-фильтры для выполнения тех задач, которые невозможно решить на основе цифровых БИХ-фильтров, а именно: получение фильтров с линейной фазой и многоскоростных фильтров, где входной и соответствующий выходной сигналы дискретизированы на разных скоростях.
2.3.3 Представление цифровых фильтров на z-плоскости.
Цифровой фильтр может быть синтезирован путем размещения полюсов и нулей передаточной функции на z-плоскости, основанном на следующих правилах:
-
Полюса и нули должны быть либо действительными, либо иметь комплексно-сопряженную пару.
-
Полюс в точке z=0 оказывает влияние на фазо-частотную характеристику фильтра и не изменяет амплитудно-частотную.
-
Полюс (или ноль) на единичной окружности означает, АЧХ на данной частоте бесконечно возрастает (или обращается в ноль).
-
Полюс вне единичной окружности означает, что фильтр нестабилен, т.е. отклик фильтра на импульс не затухает, а возрастает.
Амплитудно-частотная характеристика и представление на z-плоскости цифрового полосовой фильтр 6-го порядка, где:
• – ноль, –полюс.
ИЗУЧЕНИЕ СВОЙСТВ И ПАРАМЕТРОВ ЦИФРОВЫХ ФИЛЬТРОВ
Целью работы является генерация сигнала, состоящего из нескольких гармоник, в системе MATLAB 6.1 и исследование в приложении Signal Processing Tool (SPTool) действия фильтров нижних, верхних частот, полосовых и режекторных фильтров на этот сигнал.
Первой задачей является генерация сигнала. Для этого запустите MATLAB 6.1. В начале создания некоторого сигнала зададим вектор-столбец времени t. Для этого в окне Command Window наберите строку:
>> t=(0:.01:2)’;
Эта команда задает изменение t от 0 до 2 с шагом 0,01 и обеспечивает дискретизацию сигнала по времени.
Теперь зададим вектор некоторой функции y(t), которая представляет собой сумму синусоиды с амплитудой 1 и частотой 1 Гц с синусоидой, имеющей амплитуду 0.25 и частоту 3 Гц:
>> y=sin(2*pi*1*t)+0.25*sin(2*pi*3*t);
Обратите внимание на то, что в этом выражении t – вектор, а потому и y тоже будет вектором. Частота f=1 Гц в первой компоненте сигнала указана в явном виде (как 1) только ради наглядности. Полезно учесть, что в большинстве расчетов MATLAB не использует размерные величины, поэтому лучше сразу привыкнуть к безразмерным величинам.
Теперь можно задать построение графика y(t):
>> plot(t,y);
Обрабатывать сигналы удобно используя приложение Signal Processing Tool (SPTool), которое вызывается следующей командой:
>> sptool
Чтобы импортировать сохраненный нами сигнал в это приложение выберите в меню File пункт Import… В раскрывшимся окне поставьте переключатель Source в положение From Workspace. В поле Workspace Contents выберите строку, в которой записано имя функции описывающей сигнал (в данном примере это y), и нажмите на верхнюю кнопку со стрелкой. В поле Sampling Frequency введите частоту дискретизации. Эта величина обратна шагу изменения времени t, заданному при формировании сигнала (в данном примере шаг изменения t равен 0,01, а частота дискретизации, следовательно, равна 100).
|
(42) |
В поле Name записано имя, под которым будет значиться данный сигнал в приложении SPTool. На данной стадии это имя можно изменить по собственному усмотрению. Нажмите кнопку Ok.
Теперь в списке Signals наряду с именами встроенных сигналов появилось имя импортированного сигнала. Нажав кнопку View под списком Signals, можно посмотреть график выделенного сигнала.
В данном приложении можно проектировать и использовать цифровые фильтры для обработки сигналов. В списке Filters записаны имена трех встроенных фильтров. При нажатии кнопки View под списком Filters, появится окно Filter Viever. В нем можно посмотреть:
-
АЧХ-фильтра (амплитуду можно задать либо в линейном, либо в логарифмическом масштабе либо в децибелах; частоту – либо в линейном, либо в логарифмическом масштабе);
-
ФЧХ-фильтра (угол можно задать либо в радианах, либо в градусах; частоту – либо в линейном, либо в логарифмическом масштабе);
-
групповое время задержки фильтра;
-
нули и полюса фильтра;
-
отклик на единичный импульс.
Нажав на кнопку New, получаем возможность проектирования фильтров. Кнопка Edit дает возможность редактировать ранее созданные фильтры. В раскрывшемся окне Filter Designer задаются параметры фильтра, производится расчет порядка фильтра и вывод АЧХ.
В поле Sampling Frequency введите частоту дискретизации обрабатываемого сигнала. В поле Algorithm можно выбрать один из следующих видов цифровых фильтров:
-
КИХ-фильтр Ремеза;
-
КИХ-фильтр с минимальным среднеквадратическим отклонением;
-
КИХ-фильтр с окном Кайзера;
-
БИХ-фильтр с аппроксимацией Баттерворта;
-
БИХ-фильтр с аппроксимацией Чебышева;
-
БИХ-фильтр с аппроксимацией инверсной Чебышева;
-
БИХ-фильтр с эллиптической аппроксимацией.
Выбрав пункт Pole/Zero Editor можно задать с помощью мыши или вводя координаты на Z-плоскости полюса и нули передаточной функции.
Порядок фильтра либо рассчитывается (если стоит птичка в поле Minimum Order), если вводится в поле Order (если птичка снята). В данной работе порядок фильтров будет рассчитываться.
В поле Type задается тип фильтра: ФНЧ, ФВЧ, полосовой или режекторный фильтр.
Ниже вводятся граничные частоты и затухания полос пропускания и задерживания.
Все вносимые изменения будут тут же отображаться на графике, если поставить птичку в поле Auto Design.
Чтобы отфильтровать сигнал, выберите его в списке Signals, затем в списке Filters выберите фильтр и нажмите на кнопку Apply. В раскрывшимся окне введите (или оставьте введенное по умолчанию) имя отфильтрованного сигнала. Нажмите Ok. Теперь это имя добавилось в списке Signals. Посмотреть график отфильтрованного сигнала можно описанным выше способом.