exponenta event banner

iirlpnormc

Оптимальный IIR-фильтр с ограничением по крайней мере Pth-norm

Синтаксис

[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])

создает фильтр нижних частот с пиком 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 могут оказаться полезными.

Намеки

  • Это взвешенная наименьшая оптимизация.

  • Проверьте радиусы и расположение результирующих полюсов и нулей.

  • Если все нули находятся на единичной окружности, а полюса находятся внутри единичной окружности, попробуйте увеличить порядок числителя или уменьшить взвешивание ошибок в полосе останова.

  • Аналогично, если несколько полюсов имеют большой радиус и нули находятся внутри единичной окружности, попробуйте увеличить порядок знаменателя или уменьшить вес ошибки в полосе пропускания.

  • Если уменьшить радиус полюса, может потребоваться увеличить порядок знаменателя.

Сообщение

Poorly conditioned matrix. See the "help" file.

указывает, что iirlpnormc не удается точно вычислить оптимизацию, поскольку:

  1. Погрешность аппроксимации крайне мала (попробуйте уменьшить число полюсов или нулей - см. подсказки выше).

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

Примеры

свернуть все

В этом примере возвращается фильтр нижних частот, радиус полюса которого ограничен значением 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.

Отклик величины показывает низкочастотный характер фильтра. График полюсов/нулей показывает, что полюса ограничены до 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] Антониу, А., Цифровые фильтры: анализ, дизайн и приложения, второе издание, McGraw-Hill, Inc. 1993.

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

.

См. также

Функции

Представлен в R2011a