БИХ с ограничениями по наименьшей 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
в наименьшем смысле. Векторная edges
задает диапазонные частоты для многодиапазонных проектов. Используется ограниченный алгоритм Ньютона. n
и d
следует выбирать так, чтобы нули и полюса использовались эффективно. См. раздел «Подсказки». Всегда проверяйте полученный фильтр с помощью 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
используется в алгоритме наименьших чисел. По умолчанию это [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(...)
возвращает ошибку приближения методом наименьшего числа 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., Цифровые Фильтры: Analysis, Design, and Applications, Second Edition, McGraw-Hill, Inc. 1993.