Научная статья на тему 'Моделирование цифровой обработки сигналов в Matlab. Часть 3. Описание структур ких- и БИХ-фильтров в Matlab'

Моделирование цифровой обработки сигналов в Matlab. Часть 3. Описание структур ких- и БИХ-фильтров в Matlab Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
2698
574
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Солонина Алла

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Солонина Алла

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Моделирование цифровой обработки сигналов в Matlab. Часть 3. Описание структур ких- и БИХ-фильтров в Matlab»

Моделирование цифровой обработки сигналов в МЛТЬЛБ.

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

Алла СОЛОНИНА

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

Разновидности структур КИХ- и БИХ-фильтров

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

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

N-1

т=-&—, (1)

i+Xa*

ь=і

где (Ы-1)<(М-1), соответствует алгоритм вычисления реакции в виде РУ:

N-1 ІИ-Х

у(п) = • (2)

1=0

М-1

Ъ

ьл

H(z)^Gf[-+bliZ~l+b2kZ~2

til+alkz 1+аг)г2 2

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

H(z) = t В°*+В^~1

tS. \+aklz-l+ak2z~2'

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

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

H{z) = Yj>iz t= ^,КФ п (5)

і=0 и=0

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

N-1

y(n) = Y,btx(n-i),

1=0

(6)

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

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

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

• общий (дробно-рациональный) (1);

• произведение (3);

• сумма (4).

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

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

- прямую транспонированную структуру — Direct-Form I Transposed;

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

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

(3)

(4)

Рис. 1. Структура звена 2-го порядка:

а) Direct-Form I; б) Direct-Form I Transposed; в) Direct-Form II; г) Direct-Form II Transposed

Таблица 1. Основные структуры ЦФ

Структура ЦФ (structure) Функция Параметры функции

Direct-Form I (прямая) df1(b,a) Ь, a — векторы коэффициентов передаточной функции (1)

Direct-Form I, Second-order sections (каскадная из звеньев 2-го порядка с прямой структурой) df1sos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3)

Direct-Form I Transposed (прямая транспонированная) df1t(b,a) Ь, a — векторы коэффициентов передаточной функции (1)

Direct-Form I Transposed, Second-order sections (каскадная из звеньев 2-го порядка с прямой транспонированной структурой) df1tsos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3)

Direct-Form II (прямая каноническая) df2(b,a) Ь, a — векторы коэффициентов передаточной функции (1)

Direct-Form II, Second-order sections (каскадная из звеньев 2-го порядка с прямой канонической структурой) df2sos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3)

Direct-Form II Transposed (прямая каноническая транспонированная) df2t(b,a) Ь, a — векторы коэффициентов передаточной функции (1)

Direct-Form II Transposed, Second-order sections (каскадная из звеньев 2-го порядка с прямой канонической транспонированной структурой) df2tsos(s,G) s, G — матрица коэффициентов и коэффициент усиления передаточной функции (3)

Direct-Form Symmetric FIR (прямая приведенная КИХ с симметричной импульсной характеристикой) dfsymfir(b) Ь — вектор коэффициентов передаточной функции (5). Вектор Ь имеет длину N и его элементы симметричны относительно точки N/2

Direct-Form Antisymmetric FIR (прямая приведенная КИХ с антисимметричной импульсной характеристикой) dfasymfir(b) Ь — вектор коэффициентов передаточной функции (5). Вектор Ь имеет длину N и его элементы антисимметричны относительно точки N/2, при этом, если N — четное, то ^N/2) = 0

- прямую каноническую структуру — Direct-Form II;

- прямую каноническую транспонированную структуру — Direct-Form II Transposed;

• каскадную из звеньев 2-го порядка с прямой структурой или ее модификацией;

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

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

• с антисимметричной импульсной характеристикой — Direct-Form Antisymmetric FIR. Пример прямой приведенной структуры

рассматривается в этой статье далее.

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

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

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

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

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

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

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

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

• автоматически, если в описании объекта dfilt отсутствует точка с запятой;

• по имени объекта:

• с помощью функции:

disp(Hd)

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

V=get(Hd,'name')

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

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

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

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

Hd.name=value

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

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

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

Пример 1

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

tf(z) =

= 0,3+0, Ь~‘+0,1 5z~2+0,0 1 z~3+0,03 z~4

' 1-1,57z_1+l,7 lz_2-0,99z_3+0,3 z"4

(7)

Создать и сохранить на диске объект 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'

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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.0 1 0.03];

>> a=[1 -1.57 1.71 -0.99 0.3];

Hd

Hd=dfilt.structure(input1,s)

help dfilt

>> [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) представляются в виде матрицы:

1 ¿п ¿21 1 аи а2\

1 ¿12 ¿22 1 ^12 ^22

_ 1 Ьи. 1 о-м агь _.

• ScaleValues — вектор коэффициентов усиления G, элементы которого равны:

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

- второй — коэффициенту усиления на входе второго звена и т. д.;

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

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

>> s=get(Hd5,'sosMatrix')

8 =

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')

в =

0.3000

1.0000

1.0000

Таблица 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

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

help dfilt

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

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

п, 1+0,5963г_1+0,417г"2 Н(г) = 0,3 х----------;----------гх

l-l,026z +0,3979z~

l-0,263z-‘+0,2398z-2

<---------------------.

l-0,544z“1+0,7539z“2

(8)

Функции MATLAB для объектов dfilt

Объекты dfilt можно применять в качестве входных параметров многих функций MATLAB из пакетов расширения Signal

Описание структур ЦФ в виде объектов 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).

r' Цифровой фильтр > > Цифровой фильтр >

Фильтр Фильтр 1

и' Вход Выход > > Вход Выход >

Фильтр 2 Фильтр 3

Рис. 2. Модели объектов Ш1 иШ5 для 31ти11пК. в виде: а) блоков; б) подсистем

Пример 4

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

>> load Hd1 >> load Hd5

>> block(Hd1),block(Hd5)

>> realizemdl(Hd1),realizemdl(Hd5)

Структура КИХ-фильтра в виде объекта 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)+bjx( 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),

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

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

Пример 5

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

>> load b

>> Hd6=dfilt.dfsymfir(b)

x(n—1) x(n—2) x(n—3) x(n—4)

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

тров непосредственно в виде объекта dfilt. В этом случае требования к АЧХ должны описываться в виде объекта fdesign (от англ. Filter Design Object):

Структура БИX-фильтра в виде объекта dfilt

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

Hd6 =

FilterStructure: ’Direct-Form Symmetric FIR’ Arithmetic: 'double'

Numerator: [1x26 double]

PersistentMemory: false

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

Пример б

Создать объект 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

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

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

help fdesign.type

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

Таблица 3. Основные типы объектов fdesign

Функция Тип объекта

Iowpass Lowpass FiIter — ФНЧ

highpass Highpass FiIter — ФВЧ

bandpass Bandpass FiIter — ПФ

bandstop Bandstop FiIter — РФ

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

Описание требований к АЧХ КИХ- и БИХ-фильтров в виде объектов fdesign

В MATLAB в пакете Filter Design Toolbox имеются средства синтеза КИХ- и БИХ-филь-

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

• sp1, sp2,... — значения обязательных параметров; по умолчанию значения граничных частот задаются в шкале нормированных частот / = /7(/д/2) в основной полосе [0;1];

Таблица 4. Требования к АЧХ (дБ) для объекта типа Iowpass и highpass

Обозначение в MATLAB Обозначение в ЦОС

Fp /. — граничная частота ПП

Fst — граничная частота ПЗ

Ap отах (дБ) — максимально допустимое затухание в ПП

Ast Отт (дБ) — минимально допустимое затухание в ПЗ

Таблица 5. Требования к АЧХ (дБ) для объекта типа bandpass

Обозначение в MATLAB Обозначение в ЦОС

Fsti /_к — граничная частота ПЗ1

Fp1 /_х — левая граничная частота ПП

Fp2 /х — правая граничная частота ПП

Fst2 /к — граничная частота ПЗ2

Asti оітіп (дБ) — минимально допустимое затухание в ПЗ1

Ap Отах (дБ) — максимально допустимое затухание в ПП

Ast2 о2тіп (дБ) — минимально допустимое затухание в ПЗ2

Таблица б. Требования к АЧХ (дБ) для объекта типа bandstop

Обозначение в MATLAB Обозначение в ЦОС

Fp1 /_х — граничная частота ПП1

Fsti /_к — левая граничная частота ПЗ

Fst2 — правая граничная частота ПЗ

Fp2 /х — граничная частота ПП2

Api а1тах (дБ) — максимально допустимое затухание в ПП1

Ast атіп (дБ) — минимально допустимое затухание в ПЗ

Ap2 а2тах (дБ) — максимально допустимое затухание в ПП2

• Fs — необязательный параметр, используемый для задания частоты дискретизации ^ (Гц); в этом случае все граничные частоты также должны задаваться в шкале абсолютных частот f (Гц);

• magunits — необязательный параметр, устанавливающий единицы измерения допустимых отклонений АЧХ и принимающий значения:

- 'dB' (по умолчанию) — если требования задаются к АЧХ (дБ) (см. (5) в [6]);

- 'linear' — если требования задаются к нормированной АЧХ; в этом случае они вводятся в безразмерных единицах, но выводятся в дБ.

Выходным параметром является объект 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. Основные функции для синтеза фильтров на основе объектов !(3ез1дп

Функция Метод синтеза и название цифрового фильтра в MATLAB

butter Метод билинейного Z-преобразования; Butterworth fiIter — БИХ-фильтр Баттерворта

chebyi Метод билинейного Z-преобразования; Chebyshev Type I fiIter — БИХ-фильтр Чебышева I рода

cheby2 Метод билинейного Z-преобразования; Chebyshev Type II fiIter — БИХ-фильтр Чебышева II рода

eIIip Метод билинейного Z-преобразования; EIIiptic fiIter — БИХ-фильтр Золотарева-Кауэра (эллиптический)

equirippIe Метод наилучшей равномерной (чебышевской) аппроксимации; EquirippIe fiIter — оптимальный КИХ-фильтр (равноволновый)

kaiserwin Метод окон с использованием окна Кайзера; FiIter using a kaiser window — КИХ-фильтр с окном Кайзера

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

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

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

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

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

Hf=function_fir(Hs)

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

При синтезе КИХ-фильтров точное выполнение требований к АЧХ гарантируется автоматически в обеих полосах, поэтому параметры 'MatchExactly' и MATCH отсутствуют. Синтез ЦФ происходит в два этапа:

1. Создается объект fdesign.

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

Пример S

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

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

1. На первом этапе создадим объект fdesign с именем Hs1 с учетом обозначений таблицы 5 и для контроля выведем список его свойств:

>> Fs=8000; fk1=1000; ft1=1400; ft2=2000; fk2=2400;

>> Fstl=fk1/(Fs/2); Fpl=ft1/(Fs/2); Fp2=ft2/(Fs/2);...

Fst2=fk2/(Fs/2);

>> Astl=40; Ap=0.4455; Ast2=40;

>> Hs1=fdesign.bandpass...

('Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2',Fst1,Fp1,Fp2,Fst2,Ast1,Ap,Ast2)

Hsl =

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 Hfl

Синтезированный БИХ-фильтр (объект 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

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

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

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

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

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

function_fLr(Hs)

function_iir(Hs,'MatchExactly',MATCH)

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

Литература

1. Ingle V., Proakis J. Digital Signal Processing Using MATLAB. Second Edition — Thomson.

2. Оппенгейм А., Шафер Р. Цифровая обработка сигналов. М.: Техносфера, 2006.

3. Сергиенко А. Б. Цифровая обработка сигналов, 2-е изд. СПб.: ПИТЕР, 2006.

4. Солонина А. И., Улахович Д. А., Арбузов С. М., Соловьева Е. Б. Основы цифровой обработки сигналов. 2-е изд. СПб.: БХВ-Петербург, 2005.

5. Солонина А. И., Арбузов С. М. Цифровая обработка сигналов. Моделирование в МАТЬАБ. СПб.: БХВ-Петербург, 2008.

6. Солонина А. Моделирование цифровой обработки сигналов в МАТЬАБ. Часть 1. Синтез оптимальных (по Чебышеву) КИХ-фильтров программными средствами МАТЬАБ // Компоненты и технологии. 2008. № 11.

7. Солонина А. Моделирование цифровой обработки сигналов в МАТЬАБ. Часть 2. Синтез оптимальных БИХ-фильтров программными средствами МАТЬАБ // Компоненты и технологии. 2008. № 12.

>> Hf3=convert(Hf2,'dfsymfir')

Hf3 =

FilterStructure: 'Direct-Form Symmetric FIR' Arithmetic: 'double'

Numerator: [1x41 double]

PersistentMemory: false >> save Hf3

fvtool (Hd)

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

i Надоели баннеры? Вы всегда можете отключить рекламу.