iirlpnormc

Ограниченный наименьшее количество 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 не может точно вычислить оптимизацию потому что также:

  1. Ошибка приближения является чрезвычайно небольшой (попытайтесь сократить количество полюсов, или нули — относятся к подсказкам выше).

  2. Спецификации фильтра имеют огромное изменение, такое как a=[1 1e9 0 0].

Примеры

свернуть все

Этот пример возвращает фильтр lowpass, радиус полюса которого ограничивается к 0,8.

[b,a,err,s,g] = iirlpnormc(6,6,[0 .4 .5 1],[0 .4 .5 1],... 
[1 1 0 0],[1 1 1 1],.8);
fvtool(b,a);

Ответ значения показывает lowpass природу фильтра. Следующее графика полюса/нуля показывает, что полюса ограничиваются к 0,8, как задано в команде.

fvtool(b,a,'polezero');

Ссылки

[1] Antoniou, A., цифровые фильтры: анализ, проект, и приложения, второй выпуск, McGraw-Hill, Inc. 1993.

Расширенные возможности

Смотрите также

Функции

Введенный в R2011a