iirgrpdelay

Оптимальные БИХ фильтруют с предписанной групповой задержкой

Синтаксис

[num,den] = iirgrpdelay(n,f,edges,a)
[num,den] = iirgrpdelay(n,f,edges,a,w)
[num,den] = iirgrpdelay(n,f,edges,a,w,radius)
[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p)
[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens)
[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens,initden)
[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens,initden,tau)
[num,den,tau] = iirgrpdelay(n,f,edges,a,w)

Описание

[num,den] = iirgrpdelay(n,f,edges,a) возвращает allpass БИХ-фильтр порядка n (n должен быть даже), который является наилучшим приближением к относительному ответу групповой задержки, описанному f и a в наименьшем-количестве-pth смысла. f является вектором частот между 0 и 1, и a задан в выборках. Векторный edges задает частоты ребра полосы для многополосных проектов. iirgrpdelay использует ограниченный алгоритм типа Ньютона. Всегда проверяйте свой получившийся фильтр с помощью grpdelay или freqz.

[num,den] = iirgrpdelay(n,f,edges,a,w) использует веса в w, чтобы взвесить ошибку. w имеет одну запись на точку частоты и должен быть той же длиной как f и a). Записи в w говорят iirgrpdelay, сколько акцента, чтобы поставить минимизацию ошибки около каждой заданной частоты указывают относительно других точек.

f и a должны иметь то же число элементов. f и a могут содержать больше элементов, чем векторный edges содержит. Это позволяет вам использовать f и a, чтобы задать фильтр, который имеет любой контур групповой задержки в каждой полосе.

[num,den] = iirgrpdelay(n,f,edges,a,w,radius) возвращает фильтр, имеющий максимальный радиус полюса, равный radius, где 0 <radius <1. значения по умолчанию radius к 0,999999. Фильтры, радиус полюса которых вы ограничиваете, чтобы быть меньше чем 1,0, могут лучше сохранить точность передаточной функции после квантования.

[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p), то, где p является двухэлементным вектором [pmin pmax], позволяет вам определить минимальные и максимальные значения p, используемого в наименьшем-количестве-pth алгоритма. значения по умолчанию p к [2 128], который приводит к фильтрам, очень похожим на L-бесконечность, или Чебышева, норму. pmin и pmax должны быть ровными. Если p является 'inspect', никакая оптимизация не происходит. Вы можете использовать эту функцию, чтобы осмотреть начальное размещение полюса/нуля.

[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens) задает плотность сетки dens, используемый в процессе оптимизации. Количеством узлов решетки является (dens*(n+1)). Значение по умолчанию равняется 20. dens может быть задан как одноэлементный массив ячеек. Сетка не равномерно распределена.

[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens,initden) позволяет вам задавать первоначальную оценку коэффициентов знаменателя в векторном initden. Это может быть полезно для трудных задач оптимизации. Нулевой полюсом редактор в программном обеспечении Signal Processing Toolbox™ может использоваться для генерации initden.

[num,den] = iirgrpdelay(n,f,edges,a,w,radius,p,dens,initden,tau) позволяет первоначальной оценке смещения групповой задержки быть заданной значением tau, в выборках.

[num,den,tau] = iirgrpdelay(n,f,edges,a,w) возвращает получившееся смещение групповой задержки. Во всех случаях получившийся фильтр имеет групповую задержку, которая аппроксимирует [a + tau]. Фильтры Allpass могут иметь только положительную групповую задержку и ненулевое значение счетов tau на любую дополнительную групповую задержку, которая необходима, чтобы соответствовать форме контура, заданного (f,a). Значением по умолчанию для tau является max (a).

Подсказка: Если кластер нулей или полюсов вместе, ваш порядок фильтра может быть слишком низким, или радиус полюса может быть слишком маленьким (чрезмерно ограниченный). Попытайтесь увеличить n или radius.

Для коррекции групповой задержки БИХ-фильтра вычислите a путем вычитания групповой задержки фильтра из ее максимальной групповой задержки. Например,

[be,ae] = ellip(4,1,40,0.2);
f = 0:0.001:0.2;
g = grpdelay(be,ae,f,2);   % Equalize only the passband.
a = max(g)-g;
[num,den]=iirgrpdelay(8, f, [0 0.2], a);

Ссылки

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

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

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

| | | | |

Введенный в R2011a