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

№ 1’2009
PDF версия
Основные этапы проектирования цифровых фильтров были рассмотрены в [6], а первый этап проектирования — синтез оптимальных КИХ- и БИХ-фильтров программными средствами MATLAB — в [6] и [7] соответственно. В этой статье познакомимся со вторым этапом проектирования — выбором структуры цифровых фильтров и ее описанием в MATLAB1, а также с новыми средствами MATLAB, позволяющими синтезировать КИХ- и БИХ-фильтры заданной структуры.

Все статьи цикла:

Разновидности структур

КИХ- и БИХ-фильтров

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

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

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

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

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

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

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

соответствует РУ:

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

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

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

  • общий (дробно-рациональный) (1);
  • произведение (3);
  • сумма (4).
Рис. 1. Структура звена 2-го порядка:  а) Direct-Form I; б) Direct-Form I Transposed; в) Direct-Form II; г) Direct-Form II Transposed
Рис. 1. Структура звена 2-го порядка:
а) Direct-Form I; б) Direct-Form I Transposed; в) Direct-Form II; г) Direct-Form II Transposed

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

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

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

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

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

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

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

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

Hd=dfilt.structure(input1,…)

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

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

help dfilt

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

Таблица 1. Основные структуры ЦФ
Структура ЦФ (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
    
  • с помощью функции:
    disp(Hd)
    

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

V=get(Hd,'name')

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

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

set(Hd,'name1',value1,'name2',value2,ѕ)

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

Hd.name=value

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

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

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

Пример 1

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

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

>> b=[0.3 0.1 0.15 0.01 0.03];
>> a=[1 –1.57 1.71 –0.99 0.3];
>> Hd1=dfilt.df1(b,a)
Hd1 =
FilterStructure: 'Direct-Form I'
Arithmetic: 'double'
Numerator: [0.3000 0.1000 0.1500 0.0100 0.0300]
Denominator: [1 –1.5700 1.7100 –0.9900 0.3000]
PersistentMemory: false
>> save Hd1

Поясним смысл свойств для объектов 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 и выведем список его свойств:

>> b=[0.3 0.1 0.15 0.01 0.03];
>> a=[1 −1.57 1.71 −0.99 0.3];
>> [s,G]=tf2sos(b,a);
>> Hd5=dfilt.df1sos(s,G)
Hd5 =
FilterStructure: 'Direct-Form I, Second-Order Sections'
Arithmetic: 'double'
sosMatrix: [2x6 double]
ScaleValues: [0.3;1;1]
PersistentMemory: false
>> save Hd5

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

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

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

>> s=get(Hd5,'sosMatrix')
s =
1.0000 0.5963 0.4170 1.0000 –1.0260 0.3979
1.0000 –0.2630 0.2398 1.0000 –0.5440 0.7539
>> G=get(Hd5,'ScaleValues')
G =
	0.3000
	1.0000
	1.0000

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

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

Функции MATLAB

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

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

help dfilt
Таблица 2. Функции MATLAB для объектов dfilt
Функция Назначение
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:

>> load Hd5
>> Hd6=convert(Hd5,'df1')
Hd6 =
FilterStructure: 'Direct-Form I'
Arithmetic: 'double'
Numerator: [0.3 0.1 0.15 0.00999999999999993 0.03]
Denominator: [1 -1.57 1.71 –0.990000000000001 0.3]
PersistentMemory: false

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

Пример 4

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

>> load Hd1
>> load Hd5
>> block(Hd1),block(Hd5)
>> realizemdl(Hd1),realizemdl(Hd5)
Рис. 2. Модели объектов Hd1 и Hd5 для Simulink в виде: а) блоков; б) подсистем
Рис. 2. Модели объектов Hd1 и Hd5 для Simulink в виде:
а) блоков; б) подсистем

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

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

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

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

y ( n )= b0x ( n )+ b1x ( n –1)+ b2x ( n –2)+
+ b3x ( n –3)+ b4x ( n –4)+ b3x ( n –5)+
+ b2x ( n –6)+ b1x ( n –7)+ b0x ( n –8),

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

y ( n )= b0[ x ( n )+ x ( n –8)]+ b1[ x ( n –1)+
+ x ( n –7)]+ b2[ x ( n –2)+ x ( n –6)]+
+ b3[ x ( n –3)+ x ( n –5)]+ b4x ( n –4),

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

Рис. 3. Структура Direct-Form Symmetric FIR КИХ-фильтра 1-го типа
Рис. 3. Структура Direct-Form Symmetric FIR КИХ-фильтра 1-го типа

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

Пример 5

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

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

>> load b
>> Hd6=dfilt.dfsymfir(b)
Hd6 =
FilterStructure: 'Direct-Form Symmetric FIR'
Arithmetic: 'double'
Numerator: [1x26 double]
PersistentMemory: false

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

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

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

Пример 6

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

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

>> load b4
>> load a4
>> Hed=dfilt.df1(b4,a4);

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

>> He=convert(Hed,'df2sos');
>> get(He,'FilterStructure')
ans =
Direct-Form II, Second-Order Sections

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

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

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

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

Hs=fdesign.type(['sp1,sp2,…',]sp1,sp2,…[,Fs][,magunits])

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

Таблица 3.Основные типы объектов fdesign
Функция Тип объекта
lowpass Lowpass Filter — ФНЧ
highpass Highpass Filter — ФВЧ
bandpass Bandpass Filter — ПФ
bandstop Bandstop Filter — РФ

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

help fdesign.type

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

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

  • sp1, sp2, … — значения обязательных параметров; по умолчанию значения граничных частот задаются в шкале нормированных частот ˆf = f/(fд/2) в основной полосе [0;1];
  • Fs — необязательный параметр, используемый для задания частоты дискретизации fд(Гц); в этом случае все граничные частоты также должны задаваться в шкале абсолютных частот f (Гц);
  • magunits — необязательный параметр, устанавливающий единицы измерения допустимых отклонений АЧХ и принимающий значения:
    • ‘dB’ (по умолчанию) — если требования задаются к АЧХ (дБ) (см. (5) в [6]);
    • ‘linear’ — если требования задаются к нормированной АЧХ; в этом случае они вводятся в безразмерных единицах, но выводятся в дБ.
Таблица 4. Требования к АЧХ (дБ)
для объекта типа lowpass и highpass
Обозначение
в MATLAB
Обозначение в ЦОС
Fp fχ— граничная частота ПП
Fst fk— граничная частота ПЗ
Ap amax(дБ) — максимально допустимое
затухание в ПП
Ast amin(дБ) — минимально допустимое
затухание в ПЗ
Таблица 5. Требования к АЧХ (дБ)
для объекта типа bandpass
Обозначение
в MATLAB
Обозначение в ЦОС
Fst1 fk— граничная частота ПЗ1
Fp1 fχ— левая граничная частота ПП
Fp2 fχ— правая граничная частота ПП
Fst2 fk— граничная частота ПЗ2
Ast1 a1min(дБ) — минимально допустимое
затухание в ПЗ1
Ap amax(дБ) — максимально допустимое
затухание в ПП
Ast2 a2min(дБ) — минимально допустимое
затухание в ПЗ2
Таблица 6. Требования к АЧХ (дБ)
для объекта типа bandstop
Обозначение
в 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=fdesign.type

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

Пример 7

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

>> Hs=fdesign.lowpass
Hs =
Response: 'Lowpass'
Specification: 'Fp,Fst,Ap,Ast'
Description: {4x1 cell}
NormalizedFrequency: true
							Fpass: 0.45
							Fstop: 0.55
							Apass: 1
							Astop: 60

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

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

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

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

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

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

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

Таблица 7. Основные функции для синтеза фильтров
на основе объектов fdesign
Функция Метод синтеза и название цифрового фильтра
в 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 указанным ранее способом.

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

Hf=function_iir(Hs,'MatchExactly',MATCH)

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

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

Hf=function_fir(Hs)

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

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

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

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

Пример 8

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

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

  1. На первом этапе создадим объект fdesign с именем Hs1 с учетом обозначений таблицы 5 и для контроля выведем список его свойств:
    >> Fs=8000; fk1=1000; ft1=1400; ft2=2000; fk2=2400;
    >> Fst1=fk1/(Fs/2); Fp1=ft1/(Fs/2); Fp2=ft2/(Fs/2);…
    Fst2=fk2/(Fs/2);
    >> Ast1=40; Ap=0.4455; Ast2=40;
    >> Hs1=fdesign.bandpass…
    ('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2)
    Hs1 =
    Response: 'Bandpass'
    Specification: 'Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2'
    Description: {7x1 cell}
    NormalizedFrequency: true
    						Fstop1: 0.25
    						Fpass1: 0.35
    						Fpass2: 0.5
    						Fstop2: 0.6
    						Astop1: 40
    						Apass: 0.4455
    						Astop2: 40
    
  2. На втором этапе на основе объекта Hs1 с помощью функции ellip из таблицы 7 синтезируем БИХ-фильтр в виде объекта dfilt с именем Hf1, выведем список его свойств и сохраним на диске для дальнейшего использования:
    >> Hf1= ellip(Hs1,'MatchExactly','both')
    Hf1 =
    FilterStructure: 'Direct-Form II, Second-Order Sections'
    Arithmetic: 'double'
    sosMatrix: [4x6 double]
    ScaleValues: [5x1 double]
    PersistentMemory: false
    >> save 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=equiripple(Hs1)
    Hf2 =
    FilterStructure: 'Direct-Form FIR'
    Arithmetic: 'double'
    Numerator:[1x41 double]
    PersistentMemory: false
    

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

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

>> b=get(Hf2,'Numerator');
>> [b(1) b(41)]
ans =
	1.0e-003 *
	–0.7887  –0.7887

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

>> Hf3=convert(Hf2,'dfsymfir')
Hf3 =
FilterStructure: 'Direct-Form Symmetric FIR'
Arithmetic: 'double'
Numerator: [1x41 double]
PersistentMemory: false
>> save Hf3

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

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

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

fvtool (Hd)

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

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

function_fir(Hs)
function_iir(Hs,'MatchExactly',MATCH)

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

Часть 4. Моделирование структур цифровых фильтров с фиксированной точкой программными средствами MATLAB: анализ характеристик КИХ-фильтров


1Версии MATLAB R2008a (MATLAB 7.6 Release 2008a).

Литература

  1. Ingle V., Proakis J. Digital Signal Processing Using MATLAB. Second Edition — Thomson.
  2. Оппенгейм А., Шафер Р. Цифровая обработка сигналов. М.: Техносфера, 2006.
  3. Сергиенко А. Б. Цифровая обработка сигналов, 2-е изд. СПб.: ПИТЕР, 2006.
  4. Солонина А. И., Улахович Д. А., Арбузов С. М., Соловьева Е. Б. Основы цифровой обработки сигналов. 2-е изд. СПб.: БХВ-Петербург, 2005.
  5. Солонина А. И., Арбузов С. М. Цифровая обработка сигналов. Моделирование в MATLAB. СПб.: БХВ-Петербург, 2008.
  6. Солонина А. Моделирование цифровой обработки сигналов в MATLAB. Часть 1. Синтез оптимальных (по Чебышеву) КИХ-фильтров программными средствами MATLAB // Компоненты и технологии. 2008. № 11.
  7. Солонина А. Моделирование цифровой обработки сигналов в MATLAB. Часть 2. Синтез оптимальных БИХ-фильтров программными средствами MATLAB // Компоненты и технологии. 2008. № 12.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *