Сергиенко А.Б. Цифровая обработка сигналов (2002) (1095939), страница 66
Текст из файла (страница 66)
Рассчитанный фильтр имеет линейную ФЧХ и вносит групповую задержку, независимо от частоты равную и/2 отсчетов. Расчет фильтра осуществляется численным итерационным методом оптимизации с ограничениями. Реализация метода Ремеза 1<ак говорилось ранее в разделе «Прямые методы синтеза», метод Ремеза предназначец для синтеза нерекурсивных фильтров путем миннмаксной апцроксима- 356 Глава 6. Проектирование дискретных фнльтров цни заданной АЧХ. В настоящее время в МАТ).АВ имеется три функции, реали. зующие данный метод и несколько различающиеся по своим возможностям. Две из них, гевех и спаяв, находятся в пакете З!йпа! Ргосезэ!пя, а третья, дгеяег (ояа является наиболее обобшенным вариантом), — в пакете Р!!гег 1)еэ!йп.
Кроме того, в пакете Б!япа1 Ргосевгйпй имеется функция гевехог(1, предназначенная для сценки порядка фильтра, который при синтезе методом Ремеза будет удовлетворять заданным требованиям. Функция гетее Функция гевал предназначена для синтеза перекурсивных фильтров с линейной ФЧХ и кусочно-линейной АЧХ с возможными зонами неопределенности. Возможно также задание произвольной формы АЧХ с помощью функции пользователя (см. далее). Синтаксис вызова функции следующий: [Ь, ()е)га. орг) = геяех(п, Г. а. н. 'Ггуре'.
1!дг!()1) Здесь и — порядок рассчитываемого фильтра (его импульсная характеристика будет содержать п + 1 ненулевых отсчетов). Параметры Г и а должны быть векторами одинаковой четпой длины, они совместно определяют желаемую АЧХ синтезируемого фильтра. Вектор Г содержит значения частот, нормированные к частоте Найквиста, а вектор в — соответствуюшие этим частотам значения АЧХ. В промежутках между заданными точками АЧХ интерполнруется по линейному закону. Частоты в векторе Г должны образовывать строго возрастающую послеловательность (повторяюшиеся элементы не допускаются). Синтезируемая АЧХ определяется с помощью векторов г и а следующим образом: (2 в полосах частот ото(2Й вЂ” 1) до Я2Й) АЧХ линейно меняется от а(2Й вЂ” 1) до а(2Й).
Здесь Й вЂ” целые числа от единицы до половины длины векторов Г и в; (2 в полосах частот ото(2Й) до у(2я + 1) АЧХ считается не заданной и в процессе синтеза может оказаться произвольной. Вывести график синтезируемой АЧХ можно следующей командой: » р)ос(геэваре(1. 2. )епдгп(Г)/2), гевдаре(а. 2. )епдгП(а)/2). 'Ь') ЗАМЕЧАНИЕ Если не задать синий ивет линий принудительно с помол(ью строки 'Ь', отдельные лнпейпые фрагменты будут выволнться раэнымн постами.
Для фильтров, коэффициент передачи которых на частоте Найквиста не равен нулю, возможен только четный порядок. Если задать нечетное п, будет рассчитан фильтр на единицу большего порядка. Остальные параметры функции являются необязательными. Параметр и задает весовые коэффициенты для оптимизируемых частотных полос. Этот параметр должен быть вектором, длина которого вдвое меньше, чем длина векторов Г и ь, и содержать неотрицательные вещественные числа. В тех частотных полосах, 357 Синтез дискретных фильтров е Мдтьдв которым приписаны большие весовые коэффициенты, будет обеспечена меньшая ошибка воспроизведения заданной АЧХ. По умолчанию все весовые коэффициенты считаются одинаковыми.
При отсутствии параметра '/~ура' производится расчет фильтров с симметричной импульсной характеристикой, для которой Ь(Ь) = Ь(п + 2 — /г). Если использовать параметр '/Ьуре', становится возможным синтезировать фильтры с анти- симметричной импульсной характеристикой, когда Ь(Ь) - -Ь(п + 2 — /г). Данный параметр может принимать одно из двух строковых значений: 0 ' Ь11ЬегЬ' — синтезируется фильтр с антисимметрнчной импульсной характеристикой. Название данного режима объясняется тем, что такую характеристику, в частности, должен иметь фильтр, реализующий преобразование Гильберта (см.
раздел «Дискретное преобразование Гильберта» главы 4); 0 'б1//егеп11аЬог' — синтезируется фильтр с антиспмметричной импульсной характеристикой и, кроме того, при расчете взвешенной ошибки дополнительно используется весовой множитель 1Д. В результате ошибка воспроизведения АЧХ на низких частотах будет намного меньше, чем на высоких.
При синтезе дифференцирующего фильтра, АЧХ которого пропорциональна частоте (см. раздел «Свойства преобразования Фурье» главы 1), это означает минимизацию относительной ошибки воспроизведения заданной АЧХ. ЗАМЕЧАНИЕ Обратите внимание па то, что и режиме 'с!!//сгепг1агог' фупкциямп гешсз и йгй используются разные дополпитсльпыс весовые функции — 1//'и 1//" соответстпеппо. Это объясняется различисм используемых критериев оптимизапип — функция гсшсз минимизирует максимальное отклонение АЧХ от заданной (ошпбка лиявйио связана с АЧХ), а функция бг!з минимизирует ошибку, связь которой с АЧХ является квадрата той.
Параметр (1дг1о), хотя и является целым положительным числом, должен быть задан в виде одноэлементпого массива ячеек (то есть в фигурных скобках). Этот параметр регулирует плотность сетки частот, которая используется при расчете АЧХ фильтра с целью измерения величины пульсаций. Число точек сетки приблизительно равно 1дгзб*п/(2*Ьы), где Ьы — суммарная полоса пропускация фильтра, нормированная к частоте Найквиста. Увеличение параметра 1дг1г! может сделать пульсации более равномерными, но приведет к увеличению времени расчета.
По умолчанию значение параметра 1дг1!1 равно 16. Главным результатом работы функции является вектор Ь коэффициентов нерекурсивного фильтра. Рассчитанный фильтр имеет линейную ФЧХ и вносит групповую задержку, независимо от частоты равную и/2 отсчетов, Кроме того, можно получить дополнительную информацию о результатах синтеза с помощью параметров г!е11а и орт.
Выходной параметр пе11а содержит величину пульсаций АЧХ полученного фильтра (то есть значение максимального отклонения АЧХ от заданной). Выходной параметр орЬ представляет собой структуру со следующими полями: 0 ор1. 1дг1г! — вектор сетки частот, использованной при синтезе; 0 орЬ.цез — значения заданной АЧХ для частот из ор1./д 1о; 358 Глава 6. Проектирование дискретных фильтров Ы орС.ив — весовые коэффициенты для частот нз орт, тдг1ф Ы ор1.Н вЂ” получившаяся комплексная частотная характеристика фильтра для частот из орт.тдгто; сз орв.еггог — опшбка воспроизведения заданной частотной характеристики для частот из орС. тдг1ф О орС.телег — номера элементов вектора орт.гдгтф соответствующих экстремальным частотам (частотам, на которых отклонение АЧХ от заданной максимально); (3 ор1.т'ехСг — вектор значений акстремальных частот.
Основная часть алгоритма синтеза реализована в машинных кодах (в виде ОЕЕ- файла) на основе ЕОВТВА)ч-программы, листинг которой приведен, например, в 181. В процессе рас гета может быть выдано сообщение о том, что алгоритм не схо- дится (возможно, нз-за оншбок округления); -- Ра11вге то Сопнегде-- РгоЬаЬ)е савве тз насЬ1пе гоопф пд еггог. В этом случае следует обязательно проверить результаты синтеза, рассчитав АЧХ полученного фильтра с помощью функции тгедг. Впрочем, такой контроль поле- зен всегда, Задание пользовательской функции расчета АЧХ Если АЧХ, которую необходимо синтезировать, не является кусочно-линейной, можно воспользоваться другим вариантом синтаксиса функции гевегк [Ь. ое1та.
орт) = генек(п, Г, 'Ргезр'. и, 'ттуре', 11дг1о)) Здесь ' 1'гезр' — имя функции, рассчитывающей желаемую АЧХ. Остальные параметры имеют то же назначение, что и ранее. Функция тгезр должна вызываться следующим образом: г"оп. Ьи) = тгезр(п, т. дт, и) Входные параметры и, т и и здесь те жс, что использу|отся прн вызове функции гевал, а вектор д1' — сетка частот, сформированная функцией генах исходя из значений параметров и, 1: и 1дг1б. Функция тгевр должна вычислить значения Ат1Х сй и весовых коэффициентов ок для частот нз вектора цб Остальные входные параметры (и, 1 и и) в принципе при расчете могут не использоваться.
Их передача в функцию тгевр позволяет реализовать дополнительную гибкость. Прп необходимости люжно организовать передачу в функцию тгезр дополнительных параметров. Для э~ого при вызове функции генек необходимо взять имя функции расчета АЧХ вместе с ее дополнительными параметрами в фигурные скобки; .. - Генех(п, т, 1'тгезр', р1. р2 ...), и, 'ттуре', 11дг1Ь)) Функция тгезр прн этолт будет вызвана так: (ЬЬ. Ьи) - тгезр(п. 1. дт, и.