БИХ наименьшей P-нормы
[num,den] = iirlpnorm(n,d,f,edges,a)
[num,den] = iirlpnorm(n,d,f,edges,a,w)
[num,den] = iirlpnorm(n,d,f,edges,a,w,p)
[num,den] = iirlpnorm(n,d,f,edges,a,w,p,dens)
[num,den] = iirlpnorm(n,d,f,edges,a,w,p,dens,initnum,initden)
[num,den,err] = iirlpnorm(...)
[num,den,err,sos,g] = iirlpnorm(...)
[num,den] = iirlpnorm(n,d,f,edges,a)
возвращает фильтр, имеющий порядок числителя n
и порядок знаменателя d
который является наилучшим приближением к желаемой частотной характеристике, описанной f
и a
в наименьшем смысле. Векторная edges
задает диапазонные частоты для многодиапазонных проектов. Используется алгоритм квази-Ньютона без ограничений, и все полюсы или нули, которые находятся вне модуля круга, отражаются назад внутри. n
и d
следует выбирать так, чтобы нули и полюса использовались эффективно. См. раздел «Подсказки». Всегда используйте freqz
для проверки получившегося фильтра.
[num,den] = iirlpnorm(n,d,f,edges,a,w)
использует веса в w
для взвешивания ошибки. w
имеет один вход на частотную точку (ту же длину, что и f
и a
) что говорит iirlpnorm
сколько акцента делать на минимизации ошибки в окрестности каждой частотной точки относительно других точек. f
и a
должны иметь одинаковое количество элементов, которые могут превышать количество элементов в edges
. Это позволяет задавать фильтры, имеющие любой контур усиления в каждой полосе. Частоты, указанные в edges
должно также находиться в векторе f
. Для примера,
[num,den] = iirlpnorm(5,12,[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] = iirlpnorm(n,d,f,edges,a,w,p)
где p
является двухэлементным вектором [pmin pmax
] позволяет задавать минимальные и максимальные значения p
используется в алгоритме наименьших чисел. По умолчанию это [2 128], что по существу приводит к L-бесконечности, или Чебышеву, норме. Pmin
и pmax
должен быть ровным. Если p
является 'inspect'
Оптимизация не произойдет. Это может использоваться, чтобы проверить начальное размещение полюса/нуля.
[num,den] = iirlpnorm(n,d,f,edges,a,w,p,dens)
задает плотность сетки dens
используется в оптимизации. Количество точек сетки (dens*(n+d+1))
. Значение по умолчанию является 20. dens
может быть задан как одноэлементный массив ячеек. Сетка не разделена равными интервалами.
[num,den] = iirlpnorm(n,d,f,edges,a,w,p,dens,initnum,initden)
позволяет задавать начальную оценку коэффициентов числителя фильтра и знаменателя в векторах initnum
и initden
. initnum
должен иметь длину n + 1, и initden
должен иметь длину d + 1. Это может быть полезно для сложных задач оптимизации. Редактор нули полюсов в Signal Processing Toolbox™ программном обеспечении может использоваться для генерации initnum
и initden
.
[num,den,err] = iirlpnorm(...)
возвращает методом наименьших значений - pth ошибка приближения, err
.
[num,den,err,sos,g] = iirlpnorm(...)
возвращает представление секции второго порядка в матрице sos
и коэффициент усиления g
. По численным причинам может быть выгодно использовать sos
и g
в некоторых случаях.
Оптимальный метод наименьшего БИХ Создания фильтра
[num,den] = iirlpnorm(5,12,[0 .15 .4 .5 1],[0 .4 .5 1],... [1 1.6 1 0 0],[1 1 1 10 10])
num = 1×6
0.0028 0.0036 0.0018 0.0005 0.0001 0.0000
den = 1×13
1.0000 -6.6498 22.6915 -51.5423 85.9098 -109.9888 110.4802 -87.5412 54.2750 -25.7000 8.8451 -1.9963 0.2255
Отобразите величину ответ в fvtool
fvtool(num,den)
Это взвешенный наименьший - pth оптимизация.
Проверьте радиусы и местоположения полюсов и нули для вашего фильтра. Если нули находятся на модуль круге, а полюсы находятся внутри модуля круга, попробуйте увеличить порядок числителя или уменьшить взвешивание ошибки в полосе стопора.
Точно так же, если несколько полюсов имеют большие радиусы, и нули находятся хорошо внутри единичного круга, попробуйте увеличить порядок знаменателя или уменьшить взвешивание ошибки в полосе пропускания.
Antoniou, A., Цифровые Фильтры: Analysis, Design, and Applications, Second Edition, McGraw-Hill, Inc. 1993.
filter
| freqz
| iirgrpdelay
| iirlpnormc
| zplane