Алла СОЛОНИНА
Предлагаемый читателю цикл статей охватывает базовые методы и алгоритмы ЦОС, инвариантные относительно физической природы сигналов и составляющие ядро фундаментальной теории ЦОС. Термин «базовые» означает, что данные методы и алгоритмы используются в приложениях ЦОС непосредственно или являются основой (базой) для разработки более сложных методов и алгоритмов.
При изложении материала предполагается, что читатель знаком с основами теории ЦОС и основами работы в МЛТЬЛБ. Для начинающих рекомендуемая литература прилагается.
Проектирование цифровых фильтров
Цифровой фильтр (ЦФ) представляет собой линейную дискретную систему, выполняющую преобразование входной последовательности в выходную по алгоритму, описываемому разностным уравнением. Этот алгоритм отображает заданная структура (структура ЦФ), реализованная аппаратно или программно.
В зависимости от того, являются ли параметры ЦФ неизменными или меняющимися во времени, он будет стационарным или адаптивным. По умолчанию речь пойдет о стационарных ЦФ.
Моделирование цифровой обработки сигналов в MATLAB.
Часть 1. Синтез оптимальных (по Чебышеву) КИХ-фильтров программными средствами MATLAB
Современные тенденции в различных областях науки и техники в значительной мере связаны с разработкой цифровой аппаратуры и программного продукта, и это радикально меняет характер работы инженеров и научных работников: она все больше сводится к компьютерному моделированию. Особенностью устройств цифровой обработки сигналов (ЦОС) является то, что программные части данных устройств создаются непосредственно в процессе компьютерного моделирования, поэтому овладение его современными технологиями выдвигается на первый план. К таким технологиям, безусловно, относится получившая широкое распространение в мире система (программная среда) MATLAB, созданная компанией The Math Works, Inc.
Проектирование ЦФ производят в четыре этапа:
1. Синтез ЦФ на базе ЛДС, включающий следующие основные шаги:
1.1. Выбор типа ЦФ.
Двум типам ЛДС — нерекурсивной (КИХ) и рекурсивной (БИХ) — соответствуют два типа ЦФ:
- КИХ-фильтры (FIR filters);
- БИХ-фильтры (IIR filters).
1.2. Задание требований к характеристикам ЦФ.
Требования к характеристикам ЦФ зависят от его типа (КИХ или БИХ) и назначения (частотно-избирательный, преобразователь Гильберта и т. д.).
По умолчанию подразумевают частотно-избирательные ЦФ.
1.3. Выбор метода синтеза.
1.4. Расчет коэффициентов передаточной функции ЦФ.
2. Выбор структуры ЦФ.
3. Моделирование структуры ЦФ с учетом эффектов квантования.
4. Реализация структуры ЦФ.
Структура ЦФ (алгоритм вычисления реакции) преимущественно реализуется программно на базе цифровых процессоров обработки сигналов (ЦПОС) или ПЛИС, поэтому данный этап включает также отладку программной части ЦФ соответствующими аппаратными средствами.
В MATLAB имеются десятки функций, предназначенных для проектирования ЦФ, основная часть которых сосредоточена в пакетах расширения Signal Processing Toolbox, Filter Design Toolbox и Fixed Point Toolbox. На базе этих функций разработаны стандартные программы GUI FDATool и SPTool.
Следует, однако, понимать, что круг задач, решаемых с помощью GUI, ограничен, и для моделирования сложных систем ЦОС необходимо овладеть программными средствами проектирования ЦФ. Кроме того, знакомство с функциями MATLAB обеспечит более глубокое понимание организации GUI.
В этой статье рассмотрен первый этап проектирования для оптимальных (по Чебышеву) КИХ-фильтров.
Свойства КИХ-фильтров
КИХ-фильтр (фильтр с конечной импульсной характеристикой) описывает следующая передаточная функция:
H(z) = '£blz~l = '£h(n)z~n. (1)
1=0 л=0
Следовательно, для КИХ-фильтров расчет коэффициентов передаточной функции сводится к расчету импульсной характеристики.
Длиной и порядком КИХ-фильтра называют соответственно число коэффициен-
тов N и порядок Я передаточной функции (1), где:
Я = N-1. (2)
Сложность КИХ-фильтра определяется его длиной N (порядком Я).
КИХ-фильтры характеризуются следующими особенностями:
• возможностью обеспечить строго линейную ФЧХ (с точностью до скачков на п);
• устойчивостью по определению. Линейная (с точностью до скачков на п1)
ФЧХ (ЛФЧХ) КИХ-фильтра обеспечивается в том и только том случае, если для его ИХ к(н) выполняется одно из двух условий:
• симметрии:
к(и) = ^(N-1-^; (3)
• антисимметрии:
Ь(и) =-Ь^-1-и). (4)
По признакам симметрии/антисимметрии ИХ к(н) и нечетности/четности длины N различают четыре типа КИХ-фильтров с линейной ФЧХ (ЛФЧХ), представленные в таблице 1. При синтезе КИХ-фильтров следует быть внимательным к его избирательности (последний столбец таблицы 1).
Помимо частотно-избирательных, в таблицу 1 включены два специальных КИХ-фильтра — цифровой преобразователь Гильберта (ЦПГ) и цифровой дифференциатор (ЦД), с проектированием которых можно познакомиться в [5].
Задание требований к частотным характеристикам КИХ-фильтров
Методы синтеза частотно-избирательных КИХ-фильтров изначально предполагают ЛФЧХ (с точностью до скачков на п), поэтому требования задаются только к АЧХ в основной полосе частот [0; /д/2] и включают в себя2:
• частоту дискретизации Д
н
0І---------------------------------|—/
Л Л/2
Мл
1+8,
1 И
1—6,
ПП ПЗ
1-8?
І I
—-------
Л Л Л/2
Рис. 1. а) Идеальная АЧХ; б) требования к АЧХ для ФНЧ
• граничные частоты полос пропускания (ПП) и полос задерживания (ПЗ), для которых введены условные обозначения:
• УХ — граничная частота ПП для ФНЧ и ФВЧ;
• — граничная частота ПЗ для ФНЧ и ФВЧ;
• У-Х, -4 — левая и правая граничные частоты ПП для ПФ и РФ;
• £ь ^ — левая и правая граничные частоты ПЗ для ПФ и РФ;
• максимально допустимые отклонения АЧХ А(У), для которых введены условные обозначения:
• 81 — от единицы в ПП;
• 82 — от нуля в ПЗ.
При синтезе КИХ-фильтров в МЛТЬЛБ дополнительно задается вектор значений идеальной АЧХ: единица — в ПП и ноль — в ПЗ.
На рис. 1 приведен пример идеальной АЧХ и требований к АЧХ для ФНЧ.
Требования могут задаваться к АЧХ в децибелах — к характеристике ослабления:
А(Я [дБ] = 20 1в(А(/)) (5)
или к характеристике затухания:
А (Я [дБ] = -20 1в(А(/)). (6)
В МЛТЬЛБ требования задаются к характеристике затухания (6).
В требованиях к характеристике затухания (6) вместо значений 81 и 82 задаются:
• ашах [дБ] — максимально допустимое затухание в ПП;
• яш;п [дБ] — минимально допустимое затухание в ПЗ.
Взаимосвязь между значениями 81, 82 и ашах, яш;п соответственно устанавливается формулами:
«шах = -20 (7)
йшт = -20 1В(82). (8)
Пример 1
Для ФНЧ заданы значения 81 = 0,05 и 82 = 0,01 ^1 и и2). Необходимо рассчитать значения ашах и яш;п (атах и атт) по формулам (7, 8):
>> а.1=0.05; ашах=-20.^10(Ы1) ашах =
0.4455
>> ^2=0.01; ашт=-20.*1од10^2) ашт =
40
Получили ашах = 0,4455 дБ и яш;п = 40 дБ.
Синтез КИХ-фильтров методом наилучшей равномерной (чебышевской) аппроксимации
Метод наилучшей равномерной (чебышевской) аппроксимации поясним после знакомства с терминологией и обозначениями (табл. 2).
Используя приведенную в таблице 2 терминологию, поясним суть метода чебышев-ской аппроксимации в приложении к синтезу оптимальных (по Чебышеву) КИХ-филь-тров:
1. АЧХ КИХ-фильтра А(со) связана с его амплитудной функцией (тригонометрическим полиномом В(-, со)) соотношением:
А(о) = 1В(-, о)1.
Таблица 1. Четыре типа КИХ-фильтров с ЛФЧХ
Тип КИХ-фильтра ЛФЧХ (с точностью до скачков на п) ЦФ
Тип 1 (Туре-1): длина N — нечетная; порядок R — четный; И(п) — симметричная Ф(Й) = -(Й Я)/2 ФНЧ, ФВЧ, ПФ, РФ
Тип 2 (Туре-2): длина N — четная; порядок R — нечетный; И(п) — симметричная Ф(Й) = -(Й Я)/2 ФНЧ, ПФ
Тип 3 (Туре-3): длина N — нечетная; порядок R — четный; И(п) — антисимметричная, 1^/2)=0 Ф(Й) = (п/2)-((ЙЯ)/2) ПФ ЦПГ ЦД
Тип 4 (Туре-4): длина N — четная; порядок R — нечетный; И(п) — антисимметричная Ф(Й) = (п/2)-((ЙЯ)/2) Ф Ф
Таблица 2. Термины чебышевской аппроксимации
Обозначение Наименование Смысл
п Интервал аппроксимации Совокупность ПП и ПЗ в основной полосе частот
£(Й) Идеальная АЧХ Аппроксимируемая функция — непрерывная функция на интервале П: единица — в ПП, ноль — в ПЗ с линейной интерполяцией в переходных полосах
В(-, Й) Тригонометрический полином Аппроксимирующая функция — тригонометрический полином порядка М с вектором неизвестных коэффициентов - — амплитудная функция КИХ-фильтра с ЛФЧХ
а Веса Веса (весовые коэффициенты) в ПП и ПЗ на интервале П — вектор
|5(Й )| Модуль взвешенной ошибки аппроксимации Модуль взвешенной ошибки аппроксимации на интервале П: |5(Й)| = а|В(-, Й)-^(Й)|
5тзх Максимум модуля взвешенной ошибки аппроксимации Максимальное значение |8(Й)| на интервале П: 8тах = тах|5(Й)| = атах|В(-, Й )-^(й)|
8тт тах Минимум максимума модуля взвешенной ошибки аппроксимации Минимальное значение 8,^ на интервале П для тригонометрического полинома наилучшего приближения Б(а, Й) по критерию Чебышева3: атах|В (-, й)-^(й )| = тіп-, вектор коэффициентов -которого находится в результате решения оптимизационной задачи
1 Скачок ФЧХ на п имеет место в тех точках, где АЧХ равна нулю.
2 Если на ФЧХ не налагается требование строгой линейности, то при тех же требованиях к АЧХ БИХ-фильтр может оказаться более простым.
3 Этот критерий называют также наилучшим равномерным или минимаксным критерием.
При этом вектор коэффициентов - связан линейно с импульсной характеристикой h(n), а порядок полинома M — линейно с порядком R передаточной функции. Следовательно, расчет ИХ h(n) КИХ-филь-тра методом чебышевской аппроксимации сводится к расчету вектора коэффициентов -.
2. Согласно теореме Чебышева, существует единственный полином В(-, ю) наилучшего равномерного приближения (единственный вектор -) функции ^ со) на интервале
Q заданного порядка M, обеспечивающий
2
8min max.
3. Наоборот, существует единственный полином В(-, со) наилучшего равномерного приближения (единственный вектор -) функции ^(со) на интервале Q при заданном значении 8min max обеспечивающий минимальный порядок полинома Mmin. Следовательно, при заданных требованиях к АЧХ, полагая:
8min max = maxi81, 82^ (9)
можно синтезировать КИХ-фильтр минимального порядка — оптимальный (по Чебышеву) КИХ-фильтр. Во избежание путаницы с порядком полинома Rmin, при котором требования к АЧХ также выполняются (но с другими векторами -), введем обозначение Ropt, где: Ropt < Rmin.
4. Согласно теореме Чебышева, полином наилучшего приближения В(-, ю) функции ^(со) на интервале Q имеет равноволновый характер. Частоты, на которых модуль !8(ю)1 достигает значения 8min max, называют частотами альтернанса, так как значения 8min max на этих частотах чередуются по знаку4.
5. Для того чтобы обеспечить одинаковое значение 8min max на интервале Q при различных заданных максимально допустимых отклонениях АЧХ 81 и 82, соответственно в ПП и ПЗ, вводят веса (весовые коэффициенты), рассчитываемые следующим образом:
- вес, равный единице, присваивается полосе с наибольшим максимально допустимым отклонением;
- веса в остальных полосах рассчитываются как отношение наибольшего максимально допустимого отклонения к максимально допустимому отклонению в данной полосе.
Поэтому веса — всегда числа, большие единицы.
Процедура синтеза КИХ-фильтра
Процедура синтеза КИХ-фильтров методом чебышевской аппроксимации включает в себя:
1. Задание требований к АЧХ.
2. Оценку порядка фильтра R.
4 Альтернанс — чередование противоположных.
Оценку порядка фильтра R производят по эмпирическим формулам на основании требований к АЧX.
3. Расчет импульсной характеристики фильтра h(n) в (1).
Импульсную характеристику рассчитывают по алгоритму Паркса-Мак-Клиллена, разработанному на основе метода аппроксимации Чебышева и обменного алгоритма Ремеза.
ИX может быть как симметричной, так и антисимметричной, поэтому необходимо следить за тем, на основе какого из четырех типов КИX-фильтров может синтезироваться фильтр требуемой избирательности (табл. 1).
4. Проверку выполнения требований к АЧX. В методе чебышевской аппроксимации проверка выполнения требований заключается в сравнении максимального по модулю отклонения АЧX от идеальной с 8m1n max (9). Требования выполняются, если максимальное по модулю отклонение АЧX не превосходит 8m1n max.
Возможны две ситуации.
• Требования не выполняются.
В этом случае следует увеличить порядок R и вернуться к пп. 3-4.
Процедуру повторять до тех пор, пока не будет найден минимальный порядок Ropt = Rmjn, при котором выполняются требования к АЧX.
• Требования выполняются.
В этом случае следует уменьшить порядок R и вернуться к пп. 3-4.
Процедуру повторять до тех пор, пока не будет найден минимальный порядок Ropt = Rm1n, при котором выполняются требования к АЧX.
В обоих случаях порядок Ropt принципиально может выбираться среди всех четырех типов КИX-фильтров, возможных для заданного типа избирательности.
Таким образом, процедура синтеза КИX-фильтра методом чебышевской аппроксимации является итерационной.
Синтез КИX-фильтров методом чебышев-ской аппроксимации можно выполнить с помощью функции:
[b,error,opt]=firpm(R,f0,m0,weight,ftype,{lgrid})
где
• R — порядок фильтра R (2);
• f0 — вектор-столбец нормированных частот f = //(/д/2), в основной полосе частот [0;1], включающий: левую границу основной полосы частот f0 = 0; граничные частоты ПП и ПЗ в порядке их следования слева направо; правую границу основной полосы f0 = 1;
• m0 — вектор-столбец значений идеальной АЧX на частотах вектора 10; длины векторов m0 и 10 совпадают;
• weight — вектор-столбец весов в ПП и ПЗ в порядке следования слева направо;
• ftype — параметр, указывающий тип KMX-фильтра и принимающий значения (табл. 1):
- 'hilbert' — для 3-го и 4-го типов и цифровых преобразователей Гильберта;
- 'differentiator' — для 3-го и 4-го типов и цифровых дифференциаторов;
• по умолчанию (если значение параметра не задано явно) — для 1-го и 2-го типов;
• lgrid — коэффициент плотности сетки частот (Dens1ty Factor); указывается элементом массива ячеек в фигурных скобках иравен целому числу C >16 (16 — по умолчанию); значение lgrid используется для автоматического расчета числа точек на густой сетке частот интервала Q; с ростом lgrid возрастает точность вычисления коэффициентов b;
• b — вектор коэффициентов передаточной функции (1) длины N = R+1;
• opt — массив записей со следующими полями:
- opt.fgrid — сетка нормированных частот (вектор) на интервале аппроксимации Q (совокупности ПП и ПЗ) в шкале нормированных частот f; правая граница основной полосы частот, равная единице, не выводится;
- opt.H — вектор значений комплексной частотной характеристики на сетке частот opt.fgrid;
- opt.error — вектор отклонений АЧX от идеальной на сетке частот opt.fgrid;
- opt.des — вектор значений идеальной АЧX на сетке частот opt.fgrid;
- opt.wt — вектор весов на сетке частот opt.fgrid;
- opt.iextr — вектор номеров элементов вектора opt.fgrid, соответствующих частотам альтернанса;
- opt.fextr — вектор нормированных частот альтернанса;
- error — максимальное отклонение АЧX от идеальной на интервале Q; error=max(abs(opt.error)).
Оценку порядка R КИX-фильтра для функции firpm, а также вычисление параметров f0, m0, weight производят по требованиям к АЧX с помощью функции:
[R,f0,m0,weight]=firpmord(f,m,ripple,Fs)
Здесь f — вектор граничных абсолютных частот (Гц) в порядке их следования слева направо; m — вектор значений идеальной АЧX в порядке их следования слева направо; соблюдается условие length(f)=2*length(m)-2; ripple — вектор максимально допустимых отклонений АЧX в порядке их следования слева направо; Fs — частота дискретизации №).
Остальные параметры были определены ранее для функции firpm.
Приведем примеры синтеза оптимальных КИX-фильтров ФНЧ и ПФ с помощью функции firpm.
Пример 2
Заданы требования к A4X ФНЧ (рис. 1, табл. 3).
В MATLAB при синтезе КИХ-фильтров с помощью функции firpm порядок фильтра R определяется с точностью до ±2, и для его уточнения необходима проверка выполнения требований к АЧХ.
Проверим выполнение требований к АЧХ. Выведем значение error:
Сравнивая error с 8min max (9), в данном случае с Sj = d1 = 0,05, видим, что требования не выполняются. Следует увеличить порядок R. ФНЧ можно синтезировать на базе КИХ-фильтров 1-го и 2-го типов (табл. 1), поэтому порядок R может быть как четным, так и нечетным:
>> R=R+1; [b,error,opt]=f1rpm(R,fO,mO,we1ght);
>> [R error]
ans =
24.OOOO 0.0ЗЗЗ
Требования не выполняются. Выполним еще одну итерацию:
>> R=R+1; [b,error,opt]=f1rpm(R,fO,mO,we1ght);
>> [R error]
ans =
25.OOOO 0.04ЗЗ
Требования к АЧХ выполняются. Синтезирован оптимальный ФНЧ с ЛФЧХ порядка Kopt = 25 на базе КИХ-фильтра 2-го типа.
Для построения графиков ИХ, АЧХ и ФЧХ КИХ-фильтра можно создать внешнюю функцию plot_fir5:
function plot_fir(R,b,Fs)
% Построение графиков характеристик КИХ-фильтра % R — порядок КИХ-фильтра
% b — вектор коэффициентов передаточной функции % a=[1] — коэффициент знаменателя передаточной функции % Fs — частота дискретизации (Гц) a=[1]; n=0:R;
subplot(3,1,1), stem(n,b,'filT,'MarkerSize',3), xlabel('n'),... title('Impulse Response'), grid f=0:((Fs/2)/1000):Fs/2;
H=freqz(b,a,f,Fs); MAG=abs(H); PHASE=angle(H);
subplot(3,1,2),plot(f,MAG),xlabel('f(Hz)'),title('MAGNITUDE'),grid
subplot(3,1,3),plot(f,PHASE),xlabel('f(Hz)'),title('PHASE'),grid
Построим графики ИХ, АЧХ и ФЧХ оптимального ФНЧ с помощью внешней функции plot_fir (рис. 2):
>> plot_fir(R,b,Fs)
Поля массива записей opt выводятся по его имени:
>> opt
5 Для полного анализа характеристик синтезированного ЦФ следует обратиться к вШ РУГоо! (см. последний раздел статьи).
Пример З Заданы требования к A4X ПФ (табл. 4).
Таблица 4. Требования к АЧХ ПФ
Частоты (Гц) и их обозначения в MATLAB Максимально допустимые отклонения АЧХ и их обозначения в MATLAB
Частота дискретизации Fs 8000 - - -
Граничная частота ПЗ1 f-k fk1 1000 В полосе задерживания (ПЗ1) S2 d2 0,01
Левая граничная частота ПП f-x ft1 1400 В полосе пропускания (ПП) S1 d1 0,05
Правая граничная частота ПП fx ft2 2000
Граничная частота ПЗ2 fk fk2 2400 В полосе задерживания (ПЗ2) S2 d2 0,01
Синтезировать КИХ-фильтр методом че-бышевской аппроксимации можно с помощью функции firpm:
>> Fs=8000;
>> fk1 = 1000; ft1 = 1400; ft2=2000; fk2=2400; ^[fkl ft1 ft2 fk2]; >> m=[0 1 0];
>> d2=0.01; d1=0.05; ripple=[d2 d1 d2];
>> [R,f0,m0,weight]=firpmord(f,m,ripple,Fs);
>> [R weight’] ans =
29 5 1 5 >> [b,error,opt]=firpm(R,f0,m0,weight);
Проверим выполнение требований к АЧХ. Выведем значение error:
>> error error =
0.0663
Сравнивая error с Smin max (9), в данном случае с S1 = d1 = 0,05, видим, что требования не выполняются. Следует увеличить порядок R. ПФ можно синтезировать на базе КИХ-фильт-ров любого из 4 типов (табл. 1), поэтому порядок R может быть как четным, так и нечетным:
>> R=R+1; [b,error,opt]=firpm(R,f0,m0,weight);
>> [R error] ans =
30.0000 0.0666
Требования не выполняются. Выполним следующую итерацию, изменив тип КИХ-фильтра на 3-й. Выбирая КИХ-фильтр 3-го или 4-го типа, параметру ftype в функции firpm следует присваивать значение ’hilbert’:
>> [b,error,opt]=firpm(R,f0,m0,weight,'hilbert');
>> [R error] ans =
30.0000 0.0582
Требования не выполняются, но значение максимальной ошибки уменьшилось. Увеличим порядок R и синтезируем ПФ, например, на базе КИХ-фильтра 4-го типа:
>> R=R+1; [b,error,opt]=firpm(R,f0,m0,weight,'hilbert');
>> [R error] ans =
31.0000 0.0412
Требования к АЧХ выполняются. Синтезирован оптимальный ПФ с ЛФЧХ порядка Kopt = 31 на базе КИХ-фильтра 4-го типа.
Таблица 3. Требования к АЧХ ФНЧ
Частоты (Гц) и их обозначения в MATLAB Максимально допустимые отклонения АЧХ и их обозначения в MATLAB
Частота дискретизации Fs 8000 - - -
Граничная fx 1000 В полосе S1 0,05
частота ПП ft пропускания(ПП) d1
Граничная fk 1500 В полосе S2 0,01
частота ПЗ fk задерживания (ПЗ) d2
Синтезировать КИХ-фильтр методом че-бышевской аппроксимации можно с помощью функции йгрш:
>> Fs=8000;
>> ft=1OOO; fk=15OO; f=[ft fk];
>> m=[l 0];
>> d1=O.O5; d2=O.O1; ripple=[dl d2];
>> [R,fO,mO,w e1ght]=f1rpmord(f,m,r1pple,Fs);
>> [R weight’]
ans =
2З І З
fO (R, m( 1rp pt ,o ror [b,e e1ght) ,we O, mO
>> error error =
0.067З
Построим графики ИХ (антисимметричной), АЧХ и ФЧХ синтезированного ПФ с помощью функции plot_fir, созданной в примере 2 (рис. 3):
>> plot_fir(R,b,Fs)
В пакете Filter Design Toolbox имеется функция firgr с форматом:
[b,error,opt]=firgr(R,f0,m0,weight,ftype,{lgrid},'check')
которая по существу дублирует функцию firpm, с той разницей, что массив записей opt содержит дополнительные поля [5].
Представляет интерес формат функции firgr, позволяющий автоматически синтезировать оптимальный КИХ-фильтр:
[b,err,opt]=fLrgr({m,R},f0,m0,ripple,ftype,{lgrid},'check')
где
• {m,R} — двухэлементный массив ячеек, в котором R — оценка порядка (может отсутствовать), а m — параметр, контролирующий выбор минимального порядка и принимающий значения:
- ’minorder’ — выбирается минимальный порядок среди четных и нечетных значений;
- ’mineven’ — выбирается минимальный четный порядок;
- ’minodd’ — выбирается минимальный нечетный порядок;
• err — параметр, который не следует путать с параметром error в функции firpm; при синтезе частотно-избирательных КИХ-фильт-ров он практического интереса не представляет. Модуль максимального отклонения АЧХ определяется как max(abs(opt.error)). Все остальные параметры были определены ранее.
Параметры f0, m0, ripple, R по-прежнему вычисляются с помощью функции firpmord по требованиям к АЧХ.
Приведем примеры синтеза оптимальных КИХ-фильтров ФНЧ и ПФ с помощью функции firgr.
Пример 4
Заданы требования к АЧХ ФНЧ (рис. 1, табл. 3). Необходимо синтезировать оптимальный ФНЧ методом чебышевской аппроксимации с помощью функции firgr. Сохранить коэффициенты b на диске для использования в дальнейшем:
>> [b,err,opt]=firgr({'minorder',R},f0,m0,ripple);
>> save b >> opt.order ans =
25
Убедимся в выполнении требований к АЧХ:
>> error=max(abs(opt.error)) error=
0.0436
Требования к АЧХ выполняются. Синтезирован оптимальный ФНЧ с ЛФЧХ порядка Л t = 25 на базе КИХ-фильтра 2-го типа, такой же, как в примере 2.
Пример 5
Заданы требования к АЧХ ПФ (табл. 4). Необходимо синтезировать оптимальный ПФ методом чебышевской аппроксимации с помощью функции firgr.
ПФ может быть синтезирован на базе КИХ-фильтров всех 4 типов. В данном случае выбор параметра m, равного ’minorder’, также не приведет к успеху (проверьте самостоятельно), поэтому выполним следующую последовательность действий:
1. Синтезируем фильтр на базе КИХ-фильтра
1-го типа с параметром m, равным ’mineven’.
Порядок КИХ-фильтра (параметр optorder) обозначим как R1.
2. Синтезируем фильтр на базе КИХ-фильтра
2-го типа с параметром m, равным ’minodd’. Порядок КИХ-фильтра (параметр optorder) обозначим как R2.
3. Синтезируем фильтр на базе КИХ-фильтра
3-го типа (’hilbert’) с параметром m, равным ’mineven’. Порядок КИХ-фильтра обозначим как R3.
4. Синтезируем фильтр на базе КИХ-фильтра
4-го типа (’hilbert’) с параметром m, равным ’minodd’. Порядок КИХ-фильтра обозначим как R4.
5. Выберем из них фильтр минимального порядка — min(R1, R2, R3, R4).
>> Fs=8000;
>> fk1 = 1000; ft1=1400; ft2=2000; fk2=2400; f=[fk1 ft1 ft2 fk2];
>> m=[0 1 0];
>> d2=0.01; d1=0.05; ripple=[d2 d1 d2];
>> [R,f0,m0,weight]=firpmord(f,m,ripple,Fs);
>> [b,err,opt]=firgr({'mineven',R},f0,m0,ripple); R1=opt.order;
>> [b,err,opt]=firgr({'minodd',R},f0,m0,ripple); R2=opt.order;
>> [b,err,opt]=firgr({'mineven',R},f0,m0,ripple,'hilbert');
>> R3=opt.order;
>> [b,err,opt]=firgr({'minodd',R},f0,m0,ripple,'hilbert');
>> R4=opt.order;
>> [R1 R2 R3 R4] ans =
32 33 32 31
Синтезирован оптимальный ПФ с ЛФЧХ порядка Л t = 31 на базе КИХ-фильтра 4-го типа, такой же, как в примере 3. Убедимся в выполнении требований к АЧХ:
>> error=max(abs(opt.error)) error =
0.0413
Анализ КИХ-фильтра
В состав MATLAB входит программа GUI FVTool (Filter Visualization Tool — средства визуализации фильтра), предназначенная для анализа характеристик синтезированных ЦФ в окне Figure...: Filter Visualization Tool, обращение к которому производится с помощью функции fvtool:
fvtool(b,a)
Здесь b, a — векторы коэффициентов передаточной функции КИХ-фильтра, где a= [1]. ■
Литература
1. Ingle V., Proakis J. Digital Signal Processing Using MATLAB. Second Edition — Thomson-Engineering. 2006.
2. Оппенгейм А., Шафер Р. Цифровая обработка сигналов. М.: Техносфера, 2006.
3. Сергиенко А. Б. Цифровая обработка сигналов, 2-е изд. СПб.: Питер, 2006.
4. Солонина А. И., Улахович Д. А., Арбузов С. М., Соловьева Е. Б. Основы цифровой обработки сигналов. 2-е изд. СПб.: БХВ-Петербург, 2005.
5. Солонина А. И., Арбузов С. М. Цифровая обработка сигналов. Моделирование в MATLAB. СПб.: БХВ-Петербург, 2008.