Моделирование цифровой обработки сигналов ЦОС в MATLAB. Часть 3. Описание структур КИХ- и БИХ-фильтров в MATLAB

Моделирование цифровой обработки сигналов ЦОС в MATLAB. Часть 3. Описание структур КИХ- и БИХ-фильтров в MATLAB

Структура ЦФ отображает алгоритм вычисления реакции, описываемый разностным уравнением (РУ).

Передаточной функции БИХ-фильтра в общем виде:

где (N–1) ≤ (M–1), соответствует алгоритм вычисления реакции в виде РУ:

Помимо общего вида (1), передаточная функция БИХ-фильтра может быть представлена в других эквивалентных видах, среди которых практический интерес представляют два следующих:

    произведение множителей второго порядка с вещественными коэффициентами:

Передаточным функциям (3, 4) соответствуют свои эквивалентные виды РУ (2), то есть другие алгоритмы вычисления реакции.

Передаточной функции КИХ-фильтра:

описывающее алгоритм вычисления реакции.

Таким образом, структура ЦФ, отображающая алгоритм вычисления реакции, определяется видом передаточной функции.

Три основных вида передаточной функции БИХ-фильтров — это:

  • общий (дробно-рациональный) (1);
  • произведение (3);
  • сумма (4).

Они определяют три основные структуры БИХ-фильтров:

  • прямую — Direct-Form I и ее модификации (на рис. 1 они представлены для звена 2-го порядка):
    • прямую транспонированную структуру — Direct-Form I Transposed;
    • прямую каноническую структуру — Direct-Form II;
    • прямую каноническую транспонированную структуру — Direct-Form II Transposed;

    Передаточная функция (5) определяет прямую структуру КИХ-фильтра — Direct-Form FIR и ее модификации, среди которых практический интерес представляет прямая приведенная структура, отображающая алгоритм вычисления реакции КИХ-фильтров с линейной ФЧХ (ЛФЧХ) [6]. Она представлена двумя разновидностями:

    • с симметричной импульсной характеристикой — Direct-Form Symmetric FIR;
    • с антисимметричной импульсной характеристикой — Direct-Form Antisymmetric FIR.

    Пример прямой приведенной структуры рассматривается в этой статье далее.

    Описание структур КИХ- и БИХ-фильтров в MATLAB

    Поскольку структура ЦФ определяется видом передаточной функции, описание структуры ЦФ сводится к описанию вида его передаточной функции.

    В MATLAB структура ЦФ описывается в виде объекта dfilt (от англ. Discrete-time filter object):

    Здесь Hd — имя объекта dfilt; dfilt — тип объекта; structure — функция, задающая абстрактную структуру; на ее место ставится функция, задающая конкретную структуру объекта Hd; input1, … — список параметров функции structure.

    Полный список структур можно вывести по команде:

    Основные структуры ЦФ и соответствующие им функции MATLAB приведены в таблице 1. Отметим, что в MATLAB при описании структур по умолчанию подразумевается БИХ-фильтр, поэтому для них в названии структуры слово «IIR» отсутствует, а в названии структур КИХ-систем добавлено «FIR».

    Структура ЦФ (structure) Функция Параметры функции Direct-Form I (прямая) df1(b,a) b, a — векторы коэффициентов передаточной функции (1) Direct-Form I, Second-order sections (каскадная из звеньев 2-го порядка с прямой структурой) df1sos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3) Direct-Form I Transposed (прямая транспонированная) df1t(b,a) b, a — векторы коэффициентов передаточной функции (1) Direct-Form I Transposed, Second-order sections (каскадная из звеньев 2-го порядка с прямой транспонированной структурой) df1tsos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3) Direct-Form II (прямая каноническая) df2(b,a) b, a — векторы коэффициентов передаточной функции (1) Direct-Form II, Second-order sections (каскадная из звеньев 2-го порядка с прямой канонической структурой) df2sos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3) Direct-Form II Transposed (прямая каноническая транспонированная) df2t(b,a) b, a — векторы коэффициентов передаточной функции (1) Direct-Form II Transposed, Second-order sections (каскадная из звеньев 2-го порядка с прямой канонической транспонированной структурой) df2tsos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3) Direct-Form Symmetric FIR (прямая приведенная КИХ с симметричной импульсной характеристикой) dfsymfir(b) b — вектор коэффициентов передаточной функции (5). Вектор b имеет длину N и его элементы симметричны относительно точки N/2 Direct-Form Antisymmetric FIR (прямая приведенная КИХ с антисимметричной импульсной характеристикой) dfasymfir(b) b — вектор коэффициентов передаточной функции (5). Вектор b имеет длину N и его элементы антисимметричны относительно точки N/2, при этом, если N — четное, то b(N/2) = 0

    Выходным параметром является объект Hd (массив записей — struct array) со списком свойств (полей), зависящих от структуры.

    Вывод списка свойств объекта Hd выполняется одним из следующих способов:

    • автоматически, если в описании объекта dfilt отсутствует точка с запятой;
    • по имени объекта:
    • с помощью функции:

    Вывод конкретного свойства объекта Hd выполняется с помощью функции:

    Здесь name — имя свойства; V — имя переменной, которой присваивается значение свойства, в противном случае оно присваивается переменной ans.

    Установка доступных пользователю свойств выполняется с помощью функции:

    либо оператора присваивания

    Здесь value — значение свойства.

    Объекты dfilt можно сохранять на диске в виде файла данных с расширением mat в папке work или в собственной папке пользователя.

    К сожалению, параллельная структура из звеньев 2-го порядка с передаточной функцией (4) в MATLAB не поддерживается. При необходимости пользователь может создать внешнюю функцию, реализующую данную структуру.

    Пример 1

    Задана передаточная функция в общем виде (1):

    Создать и сохранить на диске объект Hd1 со структурой Direct-Form I (табл. 1) и вывести список его свойств:

    Поясним смысл свойств для объектов dfilt с прямой структурой:

    • FilterStructure — отображает структуру ЦФ (табл. 1).
    • Arithmetic — отображает форму представления данных в структуре ЦФ и принимает значения: ‘double’ при представлении данных с плавающей точкой и двойной точностью; ‘single’ — данных с плавающей точкой и одинарной точностью; ‘fixed’ — данных с фиксированной точкой.
    • Numerator — хранит коэффициенты числителя передаточной функции (1).
    • Denominator — хранит коэффициенты знаменателя передаточной функции (1).
    • PersistentMemory — отображает начальные условия при вычислении реакции и возвращает true (истину), если условия ненулевые, и false (ложь), если нулевые.
    Пример 2

    Задана передаточная функция (7). Создать и сохранить на диске объект Hd5 со структурой Direct-Form I, Second-Order Sections (табл. 1).

    Сначала представим передаточную функцию (7) в виде произведения (3) и определим матрицу коэффициентов s и коэффициент усиления G с помощью функции tf2sos, после чего создадим объект Hd5 и выведем список его свойств:

    Поясним смысл дополнительных свойств sosMatrix и ScaleValues для объектов с каскадной структурой из звеньев 2-го порядка:

      sosMatrix — матрица коэффициентов s; Напомним [5], что при использовании функции tf2sos коэффициенты s передаточной функции (3) представляются в виде матрицы:

    • первый элемент — коэффициенту усиления на входе первого звена, то есть на входе структуры;
    • второй — коэффициенту усиления на входе второго звена и т. д.;
    • последний — коэффициенту усиления на выходе последнего звена, то есть на выходе структуры.

    Выведем свойства sosMatrix и ScaleValues объекта Hd5, присваивая их значения переменным s и G:

    В данном случае вектор-столбец G содержит три элемента: 0.3000 — коэффициент усиления на входе первого звена (на входе структуры), 1.0000 — на входе второго звена и 1.0000 — на выходе второго звена (на выходе структуры).

    Соответствующая передаточная функция (3) имеет вид:

    Функции MATLAB

    для объектов dfilt

    Объекты dfilt можно применять в качестве входных параметров многих функций MATLAB из пакетов расширения Signal Processing Toolbox и Filter Design Toolbox. Краткий список функций, которые будут использованы в дальнейшем, дается в таблице 2, а полный — может быть выведен по команде:

    Функция Назначение block(Hd) Создает модель объекта Hd в виде блока для Simulink Hdn=convert(Hd,’newstruct’) Преобразует объект Hd в объект Hdn другой структуры из табл. 1 Hdc=copy(Hd) Создает новый независимый объект Hdc, сохраняющий все свойства объекта Hd, при этом изменение свойств Hdc не влияет на свойства Hd. При использовании оператора присваивания Hdc=Hd изменение свойств объекта Hdc приводит к автоматическому изменению свойств объекта Hd filter(Hd,x) Вычисляет реакцию объекта Hd на воздействие x по разностному уравнению fvtool(Hd) Открывает графическое окно анализа характеристик ЦФ GUI FVTool с автоматически выведенной АЧХ order(Hd) Возвращает порядок передаточной функции объекта Hd realizemdl(Hd) Создает модель объекта Hd в виде подсистемы для Simulink reorder(Hd,dir_flag) Для объекта Hd с каскадной структурой из звеньев 2-го порядка управляет расстановкой звеньев с помощью параметра dir_flag scale(Hd,’norm’) Для объекта Hd с каскадной структурой из звеньев 2-го порядка выполняет масштабирование согласно норме norm scalecheck(Hq,’norm’) Для объекта Hd с каскадной структурой из звеньев 2-го порядка возвращает единичный вектор, длина которого равна числу звеньев, в том случае, если выполнено масштабирование на основе нормы norm Hds=sos(Hd) Hds=sos(Hd,dir_flag,scale) Преобразует объект Hd, имеющий прямую структуру, в объект Hds каскадной структуры из звеньев 2-го порядка, где звенья имеют прямую структуру объекта Hd. В расширенном формате выполняет расстановку звеньев с помощью параметра dir_flag и масштабиро- вание с помощью параметра scale. Параметр scale может использоваться только для объекта Hd с прямой структурой df2

    Описание структур ЦФ в виде объектов dfilt и использование для них функций MATLAB существенно упрощает анализ ЦФ, который в ряде случаев вообще невозможен без такого описания, например, анализ эффектов квантования в ЦФ с фиксированной точкой.

    Пример 3

    Преобразовать объект Hd5 (см. пример 2) в объект Hd6 со структурой Direct-Form I:

    Созданный объект Hd6 тождественен объекту Hd1 (пример 1).

    Пример 4

    Создать модели объектов Hd1 и Hd5 (см. примеры 1 и 2) для Simulink в виде блоков и в виде подсистем (рис. 2):

    Структура КИХ-фильтра

    в виде объекта dfilt

    Свойства симметрии/антисимметрии импульсной характеристики (ИХ) КИХ-фильтров с ЛФЧХ [6] позволяют преобразовать прямую структуру КИХ-фильтра с РУ (6) в прямую приведенную Direct-Form Symmetric FIR или Direct-Form Antisymmetric FIR (табл. 1), которая получается в результате приведения подобных в РУ.

    Например, КИХ-фильтр 1-го типа [6] длины N = 9 с симметричной ИХ описывается РУ:

    откуда после приведения подобных получаем РУ в виде:

    и алгоритм, отображаемый структурой DirectForm Symmetric FIR (рис. 3).

    Аналогично получают структуру Direct-Form Antisymmetric FIR, которая отличается от изображенной на рис. 3 инверсией знака у соответствующих слагаемых, что символически учитывается знаком минус при стрелке на входе сумматора.

    Пример 5

    Создать объект dfilt с именем Hd6 — оптимальный КИХ-фильтр ФНЧ порядка R =25 с симметричной ИХ (см. пример 4 в [6]).

    Создадим объект Hd6, используя коэффициенты передаточной функции b:

    Структура БИХ-фильтра

    в виде объекта dfilt

    Типовые структуры БИХ-фильтров, поддерживаемые в MATLAB, приведены в таблице 1.

    Пример 6

    Создать объект dfilt с именем He — оптимальный БИХ-фильтр ПФ порядка R =4 (см. пример 3 в [7]) — с каскадной структурой Direct-Form II, Second-Order Sections (табл. 1).

    Сначала, используя сохраненные коэффициенты передаточной функции b4, a4, создадим объект Hed с прямой структурой Direct-Form I:

    Затем преобразуем объект Hed в объект He со структурой Direct-Form II, Second-Order Sections:

    Подобным образом можно создать описание структуры БИХ-фильтра в виде объекта dfilt с любой из числа возможных структурой (табл. 1).

    Описание требований к АЧХ

    КИХ- и БИХ-фильтров в виде объектов fdesign

    В MATLAB в пакете Filter Design Toolbox имеются средства синтеза КИХ- и БИХ-фильтров непосредственно в виде объекта dfilt. В этом случае требования к А)В1.В(ЧХ должны описываться в виде объекта fdesign (от англ. Filter Design Object):

    Здесь Hs — имя объекта fdesign; fdesign — тип объекта; type — функция, задающая абстрактный тип объекта; на ее место ставится функция, задающая конкретный тип объекта Hs (табл. 3); ‘sp1, sp2, …’ — список обязательных параметров функции type (может отсутствовать).

    Функция Тип объекта lowpass Lowpass Filter — ФНЧ highpass Highpass Filter — ФВЧ bandpass Bandpass Filter — ПФ bandstop Bandstop Filter — РФ

    Список обязательных параметров регламентирован и зависит от типа объекта, причем для каждого из них предлагается несколько вариантов списков, которые можно вывести по команде:

    если вместо абстрактной функции type указать конкретную функцию из таблицы 3.

    Для синтеза частотно-избирательных ЦФ целесообразно выбрать вариант списка параметров по умолчанию; он представляет собой список требований к А)В1.В(ЧХ (дБ) в строго фиксированной последовательности со стандартными обозначениями параметров (табл. 4–6):

    • sp1, sp2, … — значения обязательных параметров; по умолчанию значения граничных частот задаются в шкале нормированных частот ˆf = f/(fд/2) в основной полосе [0;1];
    • Fs — необязательный параметр, используемый для задания частоты дискретизации fд(Гц); в этом случае все граничные частоты также должны задаваться в шкале абсолютных частот f (Гц);
    • magunits — необязательный параметр, устанавливающий единицы измерения допустимых отклонений АЧХ и принимающий значения:
      • ‘dB’ (по умолчанию) — если требования задаются к АЧХ (дБ) (см. (5) в [6]);
      • ‘linear’ — если требования задаются к нормированной АЧХ; в этом случае они вводятся в безразмерных единицах, но выводятся в дБ.
      Обозначение в MATLAB Обозначение в ЦОС Fp fχ— граничная частота ПП Fst fk— граничная частота ПЗ Ap amax(дБ) — максимально допустимое затухание в ПП Ast amin(дБ) — минимально допустимое затухание в ПЗ Обозначение в MATLAB Обозначение в ЦОС Fst1 fk— граничная частота ПЗ1 Fp1 f–χ— левая граничная частота ПП Fp2 fχ— правая граничная частота ПП Fst2 fk— граничная частота ПЗ2 Ast1 a1min(дБ) — минимально допустимое затухание в ПЗ1 Ap amax(дБ) — максимально допустимое затухание в ПП Ast2 a2min(дБ) — минимально допустимое затухание в ПЗ2 Обозначение в MATLAB Обозначение в ЦОС Fp1 f–χ— граничная частота ПП1 Fst1 fk— левая граничная частота ПЗ Fst2 fk— правая граничная частота ПЗ Fp2 fχ— граничная частота ПП2 Ap1 a1max (дБ) — максимально допустимое затухание в ПП1 Ast amin (дБ) — минимально допустимое затухание в ПЗ Ap2 a2max (дБ) — максимально допустимое затухание в ПП2

      Выходным параметром является объект Hs (массив записей — struct array) со списком свойств (полей), зависящих от типа фильтра.

      Вывод списка свойств объекта fdesign выполняется так же, как для объекта dfilt.

      Допускается короткий формат описания объекта fdesign:

      В этом случае объект Hs создается по умолчанию.

      Пример 7

      Создать объект Hs типа lowpass по умолчанию и вывести список его свойств:

      Поясним смысл свойств объекта fdesign:

      • Response — отображает тип объекта fdesign (табл. 3);
      • SpecificationType — содержит список параметров функции type (в примере это функция lowpass) в заданной последовательности;
      • Description — представляет собой массив ячеек (cell array), символьные элементы которого расшифровывают смысл параметров функции type (в примере — функции lowpass):
      • NormalizedFrequency — флаг, устанавливающий единицы измерения частот: безразмерные (true) или в герцах (false). Смысл остальных свойств очевиден.

      Подобно объекту dfilt, объект fdesign можно сохранять на диске в виде файла данных с расширением mat в папке work или в собственной папке.

      Синтез КИХ- и БИХ-фильтров

      в виде объектов dfilt

      на основе объектов fdesign

      Объект fdesign создается для синтеза ЦФ непосредственно в виде объекта dfilt. С этой целью в пакет расширения Filter Design Toolbox включены дополнительные функции синтеза, основные из которых представлены в таблице 7.

      Функция Метод синтеза и название цифрового фильтра в MATLAB butter Метод билинейного Z-преобразования; Butterworth filter — БИХ-фильтр Баттерворта cheby1 Метод билинейного Z-преобразования; Chebyshev Type I filter — БИХ-фильтр Чебышева I рода cheby2 Метод билинейного Z-преобразования; Chebyshev Type II filter — БИХ-фильтр Чебышева II рода ellip Метод билинейного Z-преобразования; Elliptic filter — БИХ-фильтр Золотарева-Кауэра (эллиптический) equiripple Метод наилучшей равномерной (чебышевской) аппроксимации; Equiripple filter — оптимальный КИХ-фильтр (равноволновый) kaiserwin Метод окон с использованием окна Кайзера; Filter using a kaiser window — КИХ-фильтр с окном Кайзера

      Рассмотрим синтез КИХ- и БИХ-фильтров в виде объектов dfilt, при условии, что требования к АЧХ (дБ) описаны в виде объекта fdesign указанным ранее способом.

      Синтез БИХ-фильтров выполняется с помощью функции:

      Здесь function_iir — абстрактная функция, вместо которой указывается конкретная функция из таблицы 7 для БИХ-фильтра; Hs — имя объекта fdesign; ‘MatchExactly’ — флаг, установка которого (присутствие в составе параметров) означает, что требования к А)В1.В(ЧХ должны выполняться точно; MATCH — параметр, уточняющий, в какой именно из полос требования к А)В1.В(ЧХ должны выполняться точно; при использовании для синтеза БИХфильтров функций butter, cheby1 и cheby2 точное выполнение требований к А)В1.О(ЧХ гарантируется только для одной из полос — ПЗ или ПП (соответственно, параметр MATCH принимает значения: ‘stopband’ (по умолчанию) — в ПП, ‘passband’ — в ПЗ), а при использовании для синтеза БИХ-фильтров функции ellip точное выполнение требований к А)В1.В(ЧХ может гарантироваться как в одной из полос (ПЗ или ПП), так и в обеих при значении параметра MATCH, равного ‘both’; Hf — имя объекта dfilt, описывающего структуру БИХ-фильтра.

      Синтез КИХ-фильтров выполняется с помощью функции:

      Здесь function_fir — абстрактная функция, вместо которой указывается конкретная функция из таблицы 7 для КИХ-фильтра; Hs — имя объекта fdesign; Hf — имя объекта dfilt, описывающего структуру КИХ-фильтра.

      При синтезе КИХ-фильтров точное выполнение требований к А)В1.О(ЧХ гарантируется автоматически в обеих полосах, поэтому параметры ‘MatchExactly’ и MATCH отсутствуют.

      Синтез ЦФ происходит в два этапа:

      1. Создается объект fdesign.
      2. Синтезируется ЦФ в виде объекта dfilt с помощью функции из таблицы 7.
      Пример 8

      Заданы требования к АЧХ ПФ (см. табл. 4 в [6]). Синтезировать оптимальный БИХ-фильтр Золотарева-Кауэра (эллиптический) в виде объекта dfilt.

      Синтез БИХ-фильтра выполним в два этапа:

      1. На первом этапе создадим объект fdesign с именем Hs1 с учетом обозначений таблицы 5 и для контроля выведем список его свойств:
      2. На втором этапе на основе объекта Hs1 с помощью функции ellip из таблицы 7 синтезируем БИХ-фильтр в виде объекта dfilt с именем Hf1, выведем список его свойств и сохраним на диске для дальнейшего использования:

      Синтезированный БИХ-фильтр (объект Hf1) по умолчанию имеет структуру Direct-Form II, Second-Order Sections (табл. 1), для преобразования которой в другую можно воспользоваться функцией convert.

      Пример 9

      На основе созданного в примере 8 объекта fdesign с именем Hs1 синтезировать оптимальный КИХ-фильтр в виде объекта dfilt.

      Синтез КИХ-фильтра выполним в два этапа:

      1. На первом этапе создается объект fdesign, который уже имеется — Hs1.
      2. На втором этапе на основе объекта Hs1 с помощью функции equiripple из таблицы 7 синтезируем КИХ-фильтр в виде объекта dfilt с именем Hf2 и выведем список его свойств:

      Синтезированный КИХ-фильтр (объект Hf2) по умолчанию имеет Direct-Form FIR (табл. 1). Однако, по определению, ИХ КИХфильтра с ЛФЧХ — симметричная или антисимметричная, что соответствует структуре Direct-Form Symmetric FIR или Direct-Form Antisymmetric FIR (табл. 1).

      Для преобразования структуры воспользуемся функцией convert. Предварительно определим, какую именно из данных структур имеет синтезированный КИХ-фильтр, для чего выведем и сравним первый и последний отсчеты ИХ, сохраненные в свойстве Numerator:

      Имеем симметричную ИХ, следовательно, КИХ-фильтр должен иметь структуру DirectForm Symmetric FIR. Создадим объект Hf3 с данной структурой, выведем список его свойств и сохраним на диске для дальнейшего использования:

      Синтезированные в виде объектов dfilt КИХ- и БИХ-фильтры будут использованы в следующих статьях для анализа эффектов квантования.

      Анализ ЦФ в виде объекта dfilt

      Характеристики ЦФ в виде объекта dfilt можно просмотреть в окне Filter Visualization Tool GUI FVTool, обращение к которому осуществляется с помощью функции [6]:

      где Hd — имя объекта dfilt.

      При использовании коротких форматов функций синтеза КИХ- и БИХ-фильтров:

      Независимо от того, стоит или нет точка в конце строки, происходит автоматический выход в окно Filter Visualization Tool.