КИХ-фильтр парков-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 КИХ-фильтр линейной фазы, который имеет наилучшее приближение к желаемой частотной характеристике, описанной 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.