КИХ-фильтр парков-McClellan
b = firgr(n,f,a,w)
b = firgr(n,f,a,'hilbert')
b = firgr(m,f,a,r),
b = firgr({m,ni},f,a,r)
b = firgr(n,f,a,w,e)
b = firgr(n,f,a,s)
b = firgr(n,f,a,s,w,e)
b = firgr(...,'1')
b = firgr(...,'minphase')
b = firgr(...,
'check')
b = firgr(...,{lgrid}),
[b,err] = firgr(...)
[b,err,res] = firgr(...)
b = firgr(n,f,fresp,w)
b = firgr(n,f,{fresp
,p1,p2,...},w)
b = firgr(n,f,a,w)
firgr
является минимаксным алгоритмом проекта фильтра, который вы используете, чтобы разработать следующие типы действительных КИХ-фильтров:
Типы 1-4 линейная фаза:
Тип 1 является даже порядком, симметричным
Тип 2 является нечетным порядком, симметричным
Тип 3 является даже порядком, антисимметричным
Тип 4 является нечетным порядком, антисимметричным
Минимальная фаза
Максимальная фаза
Минимальный заказ (даже или нечетный)
Дополнительная пульсация
Максимальная пульсация
Ограниченная пульсация
Полоса одно точки (отметка и худой)
Принудительное усиление
Произвольная частотная характеристика формы изгибает фильтры
b = firgr(n,f,a,w)
возвращает длину n
+1 линейный фильтр фазы FIR, который имеет наилучшее приближение к желаемой частотной характеристике, описанной f
и a
в минимаксном смысле. w
является вектором весов, один на полосу. Когда вы не используете w
, все полосы взвешиваются одинаково. Для получения дополнительной информации о входных параметрах обратитесь к firpm
в Руководстве пользователя Signal Processing Toolbox™.
b = firgr(n,f,a,'hilbert')
и b
= КИХ проекта firgr(n,f,a,'differentiator')
преобразователи Гильберта и дифференциаторы. Для получения дополнительной информации о разработке этих фильтров обратитесь к firpm
в Руководстве пользователя Signal Processing Toolbox.
b = firgr(m,f,a,r),
то, где m
является одним из 'minorder
', 'mineven
' или 'minodd
', неоднократно разрабатывает фильтры, пока фильтр минимального заказа, как задано в m
, который соответствует спецификациям, не найден. r
является вектором, содержащим пиковую пульсацию на диапазон частот. Необходимо задать r
. Когда вы задаете 'mineven
' или 'minodd
', минимум даже или нечетный фильтр порядка найдены.
b = firgr({m,ni},f,a,r)
то, где m
является одним из 'minorder
', 'mineven
' или 'minodd
', использует ni
в качестве первоначальной оценки порядка фильтра. ni
является дополнительным для общих проектов фильтра, но он должен быть задан для проектов, в которых firpmord
не может использоваться, такой как при разработке дифференциаторов или Гильбертовых преобразователей.
b = firgr(n,f,a,w,e)
задает независимые ошибки приближения для различных полос. Используйте этот синтаксис, чтобы разработать дополнительную пульсацию или максимальные фильтры пульсации. Эти фильтры имеют интересные свойства, такие как наличие минимальной ширины перехода. e
является массивом ячеек из символьных векторов, задающим ошибки приближения использовать. Его длина должна равняться количеству полос. Записи e
должны быть в форме 'e#
', где #
указывает который ошибка приближения использовать для соответствующей полосы. Например, когда e = {'e1','e2','e1'}
, первые и третьи группы используют ту же ошибку приближения, 'e1'
и вторая полоса используют различный один 'e2'
. Обратите внимание на то, что, когда все группы используют ту же ошибку приближения, такую как {'e1','e1','e1',...}
, это эквивалентно исключению e
, как в b = firgr(n,f,a,w)
.
b = firgr(n,f,a,s)
используется, чтобы разработать фильтры со специальными свойствами в определенных точках частоты. s
является массивом ячеек из символьных векторов и должен быть той же длиной как f
и a
. Записи s
должны быть одним из:
N
нормальная точка частоты.
S
полоса одно точки. Частота “полоса” дана одной точкой. Соответствующее усиление в этой точке частоты должно быть задано в a
.
F
принудительная точка частоты. Обеспечивает усиление в заданном диапазоне частот, чтобы быть заданным значением.
i
неопределенная точка частоты. Используйте этот аргумент, когда смежные полосы примкнут друг к другу (никакая область перехода).
Например, следующая команда разрабатывает заграждающий фильтр с полосами задерживания одно точки с нулевым знаком (метки) в 0,25 и 0.55.
b = 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'})
b = firgr(82,[0 0.055 0.06 0.1 0.15 1],[0 0 0 0 1 1],...{'n' 'i' 'f' 'n' 'n' 'n'})
разрабатывает фильтр highpass с усилением в 0,06 обеспеченных, чтобы быть нулем. Ребро полосы в 0,055 неопределенно, поскольку первые две полосы на самом деле затрагивают. Другие ребра полосы нормальны.
b = firgr(n,f,a,s,w,e)
задает веса и независимые ошибки приближения для фильтров со специальными свойствами. Веса и свойства включены в векторы w
и e
. Иногда, вы, возможно, должны использовать независимые ошибки приближения заставить проекты с принудительными значениями сходиться. Например,
b = 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 = firgr(...,'1')
разрабатывает фильтр типа 1 (симметричный ровный порядок). Можно задать тип 2 (симметричный нечетный порядок), тип 3 (антисимметричный ровный порядок) и тип 4 (антисимметричный нечетный порядок) фильтры также. Обратите внимание на то, что ограничения применяются к a
в f = 0 или f = 1 для КИХ-типов 2, 3 фильтра, и 4.
b = firgr(...,'minphase')
разрабатывает КИХ-фильтр минимальной фазы. Можно использовать аргумент 'maxphase'
, чтобы разработать максимальный фильтр фазы FIR.
b = firgr(...,
'check')
возвращает предупреждение, когда существуют потенциальные аномалии области перехода.
b = firgr(...,{lgrid}),
где {lgrid}
является скалярным массивом ячеек. Значение скаляра управляет плотностью сетки частоты путем определения номера выборок, используемых вдоль оси частоты.
[b,err] = firgr(...)
возвращает невзвешенные ошибочные значения приближения. err
содержит один элемент для каждой независимой ошибки приближения, возвращенной функцией.
[b,err,res] = firgr(...)
возвращает структуру res
, включающий дополнительные результаты, вычисленные firgr
. res
содержит следующие поля.
Поле структуры | Содержимое |
---|---|
res.fgrid | Вектор, содержащий сетку частоты, используемую в фильтре, разрабатывает оптимизацию |
res.des | Желаемый ответ на |
res.wt | Веса на |
res.h | Фактическая частотная характеристика на сетке частоты |
res.error | Ошибка в каждой точке (желаемый ответ - фактический ответ) на сетке частоты |
res.iextr | Вектор индексов в |
res.fextr | Вектор внешних частот |
res.order | Отфильтруйте порядок |
res.edgecheck | Проверка аномалии области перехода. Один элемент на ребро полосы. Значения элемента имеют следующие значения: 1 = OK, 0 = вероятная аномалия области перехода,-1 = ребро, не проверяемое. Вычисленный, когда вы задаете опцию входа |
res.iterations | Количество итераций |
res.evals | Количество функциональных оценок для оптимизации |
firgr
является также “функциональной функцией”, позволяя вам записать функцию, которая задает желаемую частотную характеристику.
b = firgr(n,f,fresp,w)
возвращает длину N + фильтр на 1 феркин, который имеет наилучшее приближение к желаемой частотной характеристике, как возвращено пользовательским функциональным fresp
. Используйте следующий синтаксис firgr
, чтобы вызвать fresp
:
[dh,dw] = fresp(n,f,gf,w)
где:
fresp
идентифицирует функцию, которую вы используете, чтобы задать вашу желаемую частотную характеристику фильтра.
n
является порядком фильтра.
f
является вектором ребер диапазона частот, которые должны появиться монотонно между 0 и 1, где 1 половина частоты дискретизации. Диапазоны частот охватывают f(k)
к f(k+1)
для нечетного k
. Интервалы f(k+1)
к f(k+2)
для нечетного k
является “полосами перехода” или, “не заботятся” об областях во время оптимизации.
gf
является вектором узлов решетки, которые были предпочтены каждому заданному диапазону частот firgr
, и определяет частоты, на которых firgr
оценивает функцию отклика.
w
является вектором действительных, положительных весов, один на полосу, для использования во время оптимизации. w
является дополнительным в вызове firgr
. Если вы не задаете w
, он установлен в единицу, взвешивающую прежде чем быть переданным fresp
.
dh
и dw
являются желаемой частотной характеристикой и векторами веса оптимизации, оцененными на каждой частоте в сетке gf
.
firgr
включает предопределенную функцию с именем частотной характеристики 'firpmfrf2'
. Можно записать собственное на основе более простого 'firpmfrf'
. Смотрите справку для private/firpmfrf
для получения дополнительной информации.
b = firgr(n,f,{
задает дополнительные аргументы fresp
,p1,p2,...},w)p1
, p2
..., pn
, который будет передан функции отклика fresp
.
b = firgr(n,f,a,w)
синоним для b = firgr(n,f,{'firpmfrf2',a},w)
, где a
является вектором, содержащим ваши заданные амплитуды ответа в каждом ребре полосы в f
. По умолчанию firgr
разрабатывает симметричные (ровные) КИХ-фильтры. 'firpmfrf2'
является предопределенной функцией частотной характеристики. Если вы не задаете свою собственную функцию частотной характеристики (переменная fresp
), firgr
использует 'firpmfrf2'
.
b = firgr(...,'h')
и b = firgr(...,'d')
разрабатывают антисимметричные (нечетные) фильтры. Когда вы не используете аргументы 'h'
или 'd'
от синтаксиса команд firgr
, каждая функция частотной характеристики, fresp
может сказать firgr
разрабатывать или даже или нечетный фильтр. Используйте синтаксис команд sym =
fresp
('defaults',{n,f,[],w,p1,p2,...})
.
firgr
ожидает, что fresp
возвратит sym = 'even'
или sym = 'odd'
. Если fresp
не поддерживает этот вызов, firgr
принимает даже симметрию.
Для получения дополнительной информации о входных параметрах к firgr
, обратитесь к firpm
.
Shpak, Д.Дж. и А. Антонайоу, “Обобщенный метод Remez для проекта КИХ цифровые фильтры”, IEEE® Trans. Схемы и Системы, стр 161-174, февраль 1990.