Ограниченный наименьшее количество 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.