Оптимальный IIR-фильтр с ограничением по крайней мере Pth-norm
[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])
создает фильтр нижних частот с пиком 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 могут оказаться полезными.
Это взвешенная наименьшая оптимизация.
Проверьте радиусы и расположение результирующих полюсов и нулей.
Если все нули находятся на единичной окружности, а полюса находятся внутри единичной окружности, попробуйте увеличить порядок числителя или уменьшить взвешивание ошибок в полосе останова.
Аналогично, если несколько полюсов имеют большой радиус и нули находятся внутри единичной окружности, попробуйте увеличить порядок знаменателя или уменьшить вес ошибки в полосе пропускания.
Если уменьшить радиус полюса, может потребоваться увеличить порядок знаменателя.
Сообщение
Poorly conditioned matrix. See the "help" file.
указывает, что iirlpnormc не удается точно вычислить оптимизацию, поскольку:
Погрешность аппроксимации крайне мала (попробуйте уменьшить число полюсов или нулей - см. подсказки выше).
Спецификации фильтра имеют огромные вариации, такие как a=[1 1e9 0 0].
[1] Антониу, А., Цифровые фильтры: анализ, дизайн и приложения, второе издание, McGraw-Hill, Inc. 1993.