Наименьшее количество 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
в наименьшем-количестве-pth смысла. Векторный edges
задает частоты ребра полосы для многополосных проектов. Неограниченный алгоритм квазиньютона используется и любые полюса или нули, которые лежат за пределами модульного круга, отражаются назад внутри. n
и d
должен быть выбран так, чтобы нули и полюса использовались эффективно. Смотрите раздел Hints. Всегда используйте 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
используемый в наименьшем-количестве-pth алгоритма. Значение по умолчанию [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
в некоторых случаях.
Наименьшее количество Pth-нормы оптимальное БИХ-создание фильтра
[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., цифровые фильтры: анализ, проект, и приложения, второй выпуск, McGraw-Hill, Inc. 1993.
iirlpnormc
| filter
| freqz
| iirgrpdelay
| zplane