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 в наименьшем смысле. Векторная 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])

проектирует 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 используется в алгоритме наименьших чисел. По умолчанию это [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(...) возвращает ошибку приближения методом наименьшего числа 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);

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

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

fvtool(b,a,'polezero');

Figure Filter Visualization Tool - Pole-Zero Plot contains an axes and other objects of type uitoolbar, uimenu. The axes with title Pole-Zero Plot contains 5 objects of type line, text.

Ссылки

[1] Antoniou, A., Цифровые Фильтры: Analysis, Design, and Applications, Second Edition, McGraw-Hill, Inc. 1993.

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

.

См. также

Функции

Введенный в R2011a