firgr
Проектирование обобщенного КИХ-фильтра Ремеза.
| Библиотека |
|
Синтаксис
Вызов функции
-
b,err,res = firgr(n,f,a,w)— использует минимаксный алгоритм для проектирования вещественного линейно-фазового КИХ-фильтра с вектором коэффициентовbдлинойn + 1. В смысле минимаксного критерия фильтр обеспечивает наилучшее приближение к желаемой частотной характеристике, определяемой параметрамиfиa. Аргументw— вектор весовых коэффициентов фильтра, по одному на каждую полосу. Если не использоватьw, все полосы будут взвешены одинаково. Функция также возвращает величины невзвешенных ошибок аппроксимацииerrи структуруres, содержащую дополнительные результаты, вычисленные с помощьюfirgr. Дополнительную информацию об аргументах см. вfirpm.
-
b,err,res = firgr(m,f,a,r)— повторно проектирует фильтры до тех пор, пока не будет найден фильтр минимального порядка, указанного вmи соответствующий аргументамfиa. Аргументmможет принимать одно из значений:"minorder","mineven"или"minodd". Аргументr— это вектор, содержащий пиковую пульсацию для каждой полосы частот, его необходимо задать. При указании"mineven"или"minodd"функция находит фильтр минимального четного или нечетного порядка.
-
b,err,res = firgr((m,ni),f,a,r)— в качестве начальной оценки порядка фильтра используетсяni. Аргументniне является обязательным для типовых конструкций фильтров, но его необходимо указывать для конструкций, в которых невозможно использоватьfirpmord, например при проектировании дифференциаторов или преобразователей Гильберта.
-
b,err,res = firgr(n,f,a,w,e)— задает независимые ошибки аппроксимации для разных полос. Используйте этот синтаксис для проектирования фильтров с дополнительной пульсацией или максимальной пульсацией. Эти фильтры обладают интересными свойствами, такими как минимальная ширина перехода. Аргументe— это вектор строк, задающий ошибки аппроксимации, которые следует использовать. Его длина должна равняться количеству полос.
-
b,err,res = firgr(n,f,a,s,w,e)— задает весовые коэффициенты фильтра и независимые ошибки аппроксимации для фильтров со специальными свойствами. Весовые коэффициенты и свойства содержатся в векторахwиe. Иногда может потребоваться использование независимых ошибок аппроксимации, чтобы обеспечить сходимость конструкции с заданными значениями. Например,b,err,res = firgr(82,[0 0.055 0.06 0.1 0.15 1], [0 0 0 0 1 1],['n' 'i' 'f' 'n' 'n' 'n'], [10 1 1] ,["e1" "e2" "e3"]);
-
b,err,res = firgr(___,type) — проектирует фильтр, тип которого задается в аргументеtype. Аргументtypeзадается как"1"— симметричный фильтр четного порядка,"2"— симметричный фильтр нечетного порядка,"3"— антисимметричный фильтр четного порядка или"4"— антисимметричный фильтр нечетного порядка. Обратите внимание, что для КИХ-фильтров типов"2","3"и"4"существуют ограничения по значениям амплитудыa. Для фильтров типов"2"и"3"амплитуда должна быть равна0на частотахf = 0иf = 1, а для фильтра типа"4"амплитуда должна быть равна0на частотеf = 0.
Аргументы
Входные аргументы
#
n —
порядок фильтра
скаляр
Details
Порядок фильтра, заданный как целое число, не меньше 3.
| Типы данных |
|
#
f —
нормированные частоты
вектор
Details
Нормированные частотные точки, заданные как вектор вещественных значений. Значение аргумента должно находиться в диапазоне [0, 1], где 1 соответствует частоте Найквиста. Длина вектора f должна быть четной. Частоты должны быть упорядочены по возрастанию.
| Типы данных |
|
#
w —
коэффициенты аппроксимации внутри полос частот
вектор
#
ftype —
тип фильтра
"hilbert" | "differentiator"
Details
Тип фильтра для линейно-фазовых фильтров с нечетной симметрией (тип III и тип IV), заданный одним из следующих значений:
-
"hilbert"— коэффициенты на выходе вbподчиняются соотношению . К этому классу фильтров относится преобразователь Гильберта, который имеет заданную амплитуду, равную1, во всей полосе частот.Например,
b = firgr(30,[0.1 0.9],[1 1],"hilbert");проектирует приближенный КИХ-преобразователь Гильберта длиной
31. -
"differentiator"— для полос с ненулевой амплитудой фильтр взвешивает погрешность с коэффициентом , так что погрешность на низких частотах значительно меньше, чем на высоких. Для КИХ-дифференциаторов, амплитудная характеристика которых пропорциональна частоте, эти фильтры минимизируют максимальную относительную погрешность (максимальное значение отношения погрешности к желаемой амплитуде).
| Типы данных |
|
#
m —
тип задания минимального порядка фильтра
"minorder" | "mineven" | "minodd"
Details
Тип задания минимального порядка фильтра, заданный как "minorder", "mineven" или "minodd". При указании "mineven" или "minodd" функция проектирует фильтр минимального четного или минимального нечетного порядка.
| Типы данных |
|
#
type —
номер типа фильтра
"1" | "2" | "3" | "4"
Details
Тип фильтра, заданный одним из следующих значений:
-
"1"— симметричный фильтр четного порядка; -
"2"— симметричный фильтр нечетного порядка; -
"3"— антисимметричный фильтр четного порядка; -
"4"— антисимметричный фильтр нечетного порядка.
| Типы данных |
|
#
mp —
выбор между фильтром с минимальной или максимальной фазой
"minphase" | "maxphase"
Details
Выбор между фильтром с минимальной "minphase" или максимальной "maxphase" фазой.
| Типы данных |
|
#
ni —
начальная оценка порядка фильтра
скаляр
Details
Начальная оценка порядка фильтра, заданная как целое число, большее или равное 3. Функция принимает это значение в синтаксисе b = firgr((m,ni),f,a,r). Аргумент ni не является обязательным для типовых конструкций фильтров, но его необходимо указать для конструкций, в которых невозможно использовать firpmord, например при проектировании дифференциаторов или преобразователей Гильберта.
| Типы данных |
|
#
e —
независимые ошибки аппроксимации для полос частот
вектор | кортеж
Details
Независимые ошибки аппроксимации, используемые для разных полос, заданные как вектор строк или кортеж. Длина e должна равняться количеству полос. Элементы e должны иметь вид "e#", где # указывает, какую ошибку аппроксимации следует использовать для соответствующей полосы. Например, когда e = ["e1","e2","e1"], первая и третья полоса используют одну и ту же ошибку аппроксимации "e1", а вторая полоса — другую "e2". Когда все полосы используют одну и ту же ошибку аппроксимации, например ["e1","e1","e1",…], это эквивалентно пропуску e, как в синтаксисе b,err,res = firgr(n,f,a,w).
| Типы данных |
|
#
s —
спецификация точек частот
вектор | кортеж
Details
Особые свойства в определенных точках частоты, заданные как вектор или кортеж символов. Аргумент s должен иметь ту же длину, что и f и a. Элементы s должны иметь одно из следующих значений:
-
'n'— обычная частотная точка. -
's'— одноточечная полоса. Частотная «полоса» задается одной точкой. Укажите соответствующий коэффициент усиления в этой точке частоты вa. -
'f'— принудительная точка частоты. Принудительно устанавливает коэффициент усиления в указанной полосе частот равным заданному значению. -
'i'— неопределенная частотная точка. Используйте это значение, когда соседние полосы частот примыкают друг к другу (без переходной зоны).
Например, следующая команда проектирует заграждающий фильтр с одноточечными полосами задерживания (выемками) с нулевым значением на частотах 0.25 и 0.55.
b,err,res = firgr(42,[0 0.2 0.25 0.3 0.5 0.55 0.6 1], [1 1 0 1 1 0 1 1],['n' 'n' 's' 'n' 'n' 's' 'n' 'n'])
А эта команда проектирует фильтр высоких частот с коэффициентом усиления, принудительно установленным на ноль в точке 0.06. Край полосы в точке 0.055 является неопределенным, поскольку первые две полосы фактически соприкасаются. Остальные края полос являются нормальными.
b,err,res = firgr(82,[0 0.055 0.06 0.1 0.15 1],[0 0 0 0 1 1],['n' 'i' 'f' 'n' 'n' 'n'])
| Типы данных |
|
#
lgrid —
плотность частотной сетки
кортеж
Details
Управляет плотностью частотной сетки, которая имеет примерно (lgrid*n)/(2*bw) частотных точек, где bw — доля общего интервала полосы частот [0, 1], покрываемого f. Чем выше значение lgrid, тем точнее фильтр приближается к эталонному фильтру с равномерными пульсациями, но такие вычисления занимают больше времени. Значение по умолчанию 16 — это минимальное значение, которое следует задавать для lgrid.
| Типы данных |
|
#
hd —
четность фильтра
"h" | "d" | 'h' | 'd'
Details
Четность фильтра, заданная как "h", "d", 'h' или 'd'.
| Типы данных |
|
Выходные аргументы
#
b —
коэффициенты фильтра
вектор
Details
Коэффициенты фильтра, возвращаемые в виде вектора длиной n + 1.
Функция firgr использует минимаксный алгоритм проектирования для следующих типов вещественных КИХ-фильтров:
-
Типы 1–4 с линейной фазой:
-
Тип 1 — четного порядка, симметричный;
-
Тип 2 — нечетного порядка, симметричный;
-
Тип 3 — четного порядка, антисимметричный;
-
Тип 4 — нечетного порядка, антисимметричный.
-
-
Минимальная фаза.
-
Максимальная фаза.
-
Минимальный порядок (четный или нечетный).
-
Дополнительная пульсация.
-
Максимальная пульсация.
-
Пульсация с ограничениями.
-
Одноточечная полоса (с выемкой и пиком).
-
Принудительное усиление.
#
err —
величина невзвешенной погрешности аппроксимации
скаляр | вектор
Details
Величины невзвешенных ошибок аппроксимации, возвращаемые в виде скаляра или вектора. Массив err содержит по одному элементу для каждой независимой ошибки аппроксимации, возвращаемой функцией.
#
res —
частотная характеристика
структура
Details
Частотная характеристика, возвращаемая в виде структуры. Структура res содержит следующие поля:
| Поле структуры | Содержимое |
|---|---|
|
Вектор, содержащий частотную сетку, используемую при оптимизации конструкции фильтра. |
|
Желаемый отклик на |
|
Весовые коэффициенты |
|
Фактические частотные характеристики на частотной сетке. |
|
Ошибка в каждой точке (желаемая характеристика — фактическая характеристика) на частотной сетке. |
|
Вектор индексов в |
|
Вектор внешних частот. |
|
Порядок фильтра. |
|
Проверка аномалий в переходной зоне. По одному элементу на каждый край полосы. Элементы имеют следующие значения: |
|
Количество итераций |
|
Количество вычислений функции для оптимизации. |