Ограниченный наименьшее количество Pth-нормы оптимальный БИХ-фильтр
[num,den] = iirlpnormc(n,d,f,edges,a)
[num,den] = iirlpnormc(n,d,f,edges,a,w)
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius)
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius,p)
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius,p,dens)
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius,p,dens,initnum,initden)
[num,den,err] = iirlpnormc(...)
[num,den,err,sos,g] = iirlpnormc(...)
[num,den] = iirlpnormc(n,d,f,edges,a)
возвращается фильтр, имеющий числитель, приказывают, чтобы n
и знаменатель заказали d
, который является наилучшим приближением к желаемой частотной характеристике, описанной f
и a
в наименьшем-количестве-pth смысла. Векторный edges
задает частоты ребра полосы для многополосных проектов. Используется ограниченный алгоритм типа Ньютона. n
и d
должны быть выбраны так, чтобы нули и полюса использовались эффективно. Смотрите раздел Hints. Всегда проверяйте получившийся фильтр с помощью fvtool
.
[num,den] = iirlpnormc(n,d,f,edges,a,w)
использует веса в w
, чтобы взвесить ошибку. w
имеет одну запись на точку частоты (та же длина как f
и a
), который говорит iirlpnormc
, сколько акцента, чтобы поставить минимизацию ошибки около каждой частоты указывают относительно других точек. f
и a
должны иметь то же число элементов, которое может превысить число элементов в edges
. Это допускает спецификацию фильтров, имеющих любой контур усиления в каждой полосе. Частоты, заданные в edges
, должны также появиться в векторном f
. Например,
[num,den] = iirlpnormc(5,5,[0 .15 .4 .5 1],[0 .4 .5 1],... [1 1.6 1 0 0],[1 1 1 10 10])
разрабатывает фильтр lowpass с пиком 1,6 в полосе пропускания.
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius)
возвращает фильтр, имеющий максимальный радиус полюса radius
где 0 <radius
<1. значения по умолчанию radius
к 0,999999. Фильтры, которые имеют уменьшаемый радиус полюса, могут сохранить лучшую точность передаточной функции после того, как вы квантуете их.
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius,p)
то, где p
является двухэлементным вектором [pmin pmax
], допускает спецификацию минимальных и максимальных значений p
, используемого в наименьшем-количестве-pth алгоритма. Значение по умолчанию [2 128], который по существу приводит к L-бесконечности, или Чебышеву, норме. pmin
и pmax
должны быть ровными. Если p
будет 'inspect'
, никакая оптимизация не произойдет. Это может использоваться, чтобы осмотреть начальное размещение полюса/нуля.
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius,p,dens)
задает плотность сетки dens
, используемый в оптимизации. Количеством узлов решетки является (dens*(n+d+1))
. Значение по умолчанию равняется 20. dens
может быть задан как одноэлементный массив ячеек. Сетка не равномерно распределена.
[num,den] = iirlpnormc(n,d,f,edges,a,w,radius,p,dens,initnum,initden)
допускает спецификацию первоначальной оценки числителя фильтра и коэффициентов знаменателя в векторах initnum
и initden
. Это может быть полезно для трудных задач оптимизации. Нулевой полюсом редактор в программном обеспечении Signal Processing Toolbox™ может использоваться для генерации initnum
и initden
.
[num,den,err] = iirlpnormc(...)
возвращает наименьшее-количество-Pth ошибки приближения err
.
[num,den,err,sos,g] = iirlpnormc(...)
возвращает представление раздела второго порядка в матричном SOS и усилении G. По числовым причинам можно найти SOS и G выгодным в некоторых случаях.
Это - взвешенное наименьшее-количество-pth оптимизации.
Проверяйте радиусы и местоположение получившихся полюсов и нулей.
Если нули - все на модульном круге, и полюса хорошо в модульном кругу, пытаются увеличить порядок числителя или уменьшать ошибку при взвешивании в полосе задерживания.
Точно так же, если несколько полюсов имеют большой радиус, и нули хорошо в модульном кругу, пытаются увеличить порядок знаменателя или уменьшать ошибочный вес в полосе пропускания.
Если вы уменьшаете радиус полюса, вы можете должны быть увеличить порядок знаменателя.
Сообщение
Poorly conditioned matrix. See the "help" file.
указывает, что iirlpnormc
не может точно вычислить оптимизацию потому что также:
Ошибка приближения является чрезвычайно небольшой (попытайтесь сократить количество полюсов, или нули — относятся к подсказкам выше).
Спецификации фильтра имеют огромное изменение, такое как a=[1 1e9 0 0]
.
[1] Antoniou, A., цифровые фильтры: анализ, проект, и приложения, второй выпуск, McGraw-Hill, Inc. 1993.