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