exponenta event banner

fdesign.arbgrpdelay

Объект спецификации фильтра произвольной групповой задержки

Синтаксис

D = fdesign.arbgrpdelay(SPEC)
D = fdesign.arbgrpdelay(SPEC,SPEC1,SPEC2,...)
D = fdesign.arbgrpdelay(N,F,Gd)
D = fdesign.arbgrpdelay(...,Fs)

Описание

Произвольные фильтры групповой задержки - это фильтры allpass, которые можно использовать для коррекции фазовых искажений, вносимых другими фильтрами. fdesign.arbgrpdelay использует итеративную процедуру оптимизации по меньшей мере p-й нормы для минимизации ошибки фазового отклика [1].

D = fdesign.arbgrpdelay(SPEC) задает фильтр произвольной групповой задержки allpass с помощью Specification свойство имеет значение SPEC. Описание поддерживаемых спецификаций см. в разделе Входные аргументы.

D = fdesign.arbgrpdelay(SPEC,SPEC1,SPEC2,...) инициализирует объект спецификации фильтра произвольной групповой задержки allpass со спецификациями SPEC1,SPEC2,.... Описание поддерживаемых спецификаций см. в документе SPEC.

D = fdesign.arbgrpdelay(N,F,Gd) задает фильтр произвольной групповой задержки allpass. Порядок фильтрации равен N, частотный вектор, равный Fи вектор групповой задержки, равный Gd. Описание порядка фильтрации, частотного вектора и входных значений вектора групповой задержки см. в разделе SPEC. Пример использования этого синтаксиса см. в примере «Создание фильтра Allpass с произвольной задержкой группы».

D = fdesign.arbgrpdelay(...,Fs) задает частоту выборки в герцах как конечный скаляр. Если частота выборки не указана, все частоты являются нормализованными частотами, а значения групповой задержки находятся в выборках. Если указана частота выборки, значения задержки группы будут в секундах.

Совет

Если произвольная групповая задержка создает ошибку Poorly conditioned Hessian matrix, попробуйте выполнить одно или несколько из следующих действий:

Входные аргументы

SPEC

Спецификация фильтра. SPEC является одним из следующих двух вариантов. Записи не чувствительны к регистру.

  • 'N,F,Gd'

  • 'N,B,F,Gd'

Характеристики фильтра определяются следующим образом:

  • N - Порядок фильтрации. Это значение должно быть даже положительным целым числом. Порядки числителя и знаменателя равны N. Allpass Systems объясняет, почему порядки фильтров числителя и знаменателя равны, и порядок должен быть даже в fdesign.arbgrpdelay.

  • F - Частотный вектор для спецификаций групповой задержки. Элементы частотного вектора должны увеличиваться монотонно. Если частота выборки не указана, Fsв герцах частоты являются нормированными частотами. Для однополосной конструкции первый элемент нормализованного частотного вектора должен быть равен нулю, а последний элемент должен быть равен 1. Они соответствуют 0 и δ радиан/выборка соответственно. Для многополосных конструкций объединение частотных векторов должно быть в диапазоне от [0,1].

    Если указана частота выборки, Fsпервый элемент частотного вектора в однополосной схеме должен быть равен 0. Последним элементом должна быть частота Найквиста, Fs/2. Для многополосных конструкций объединение частотных векторов должно быть в диапазоне от [0, Fs/2].

  • Gd - Вектор задержки группы. Вектор с неотрицательными элементами, равными по длине частотному вектору, F. Элементы Gd указать неотрицательную групповую задержку на соответствующем элементе частотного вектора, F.

    Если частота выборки не указана, Fsв Герце групповые задержки находятся в выборках. Если указана частота дискретизации, задержки группы будут в секундах.

  • B - Количество полос частот. При использовании этой спецификации необходимо указать вектор задержки частоты и группы для каждого диапазона. Объединение частотных векторов должно быть в диапазоне от [0,1] в нормированной частоте или [0,Fs/2] при заданной частоте дискретизации. Элементы объединения полос частот должны быть монотонно увеличивающимися.

    Например:

    filtorder = 14;
    freqband1 = [0 0.1 0.4]; grpdelay1 = [1 2 3];
    freqband2 = [0.5 0.8 1]; grpdelay2 = [3 2 1];
    D = fdesign.arbgrpdelay('N,B,F,Gd',filtorder,2,freqband1,grpdelay1,freqband2,grpdelay2);

По умолчанию: 'N,F,Gd'

Fs

Частота дискретизации. Укажите частоту выборки как конечный положительный скаляр после всех других входных аргументов. Указание частоты дискретизации вынуждает блоки групповой задержки быть в секундах. Если указана частота дискретизации, первый элемент частотного вектора должен быть равен 0. Последним элементом должна быть частота Найквиста, Fs/2.

Выходные аргументы

D

Объект спецификации фильтра. Объект спецификации фильтра произвольной групповой задержки allpass, содержащий следующие изменяемые свойства: Specification, NormalizedFrequency, FilterOrder, Frequencies, и GroupDelay.

Используйте normalizefreq для изменения NormalizedFrequency имущество после строительства.

Примеры

свернуть все

Создайте сигнал, состоящий из двух синусоид с дискретным временным окном (волновые пакеты) с непересекающейся временной поддержкой, чтобы проиллюстрировать частотную дисперсию. Одна дискретная синусоида имеет частоту pi/2 радиан/образец, а другая имеет частоту pi/4 радиан/образец. Имеется 9 периодов синусоиды более высокой частоты, которые предшествуют 5 периодам сигнала более низкой частоты.

Создайте сигнал.

x = zeros(300,1);
x(1:36) = cos(pi/2*(0:35)).*hamming(36)';
x(40:40+39) = cos(pi/4*(0:39)).*hamming(40)';

Создайте произвольный фильтр групповой задержки, который задерживает пакет высокочастотных волн приблизительно на 100 выборок.

N = 18;
f = 0:.1:1;
gd = ones(size(f));

Задержка pi/2 радиан/образец на 100 образцов

gd(6) = 100;
d = fdesign.arbgrpdelay(N,f,gd);
Hd = design(d,'iirlpnorm','MaxPoleRadius',0.9,'SystemObject',true);

Визуализация задержки группы

fvtool(Hd,'analysis','grpdelay');

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line.

Фильтрация входного сигнала с помощью фильтра произвольной групповой задержки и иллюстрация частотной дисперсии. Высокочастотный волновой пакет, который первоначально предшествовал низкочастотному волновому пакету, теперь происходит позже из-за непостоянной групповой задержки.

y = Hd(x);
subplot(211)
plot(x); title('Input Signal');
grid on; ylabel('Amplitude');
subplot(212);
plot(y); title('Output Signal'); grid on;
xlabel('Samples'); ylabel('Amplitude');

Figure contains 2 axes. Axes 1 with title Input Signal contains an object of type line. Axes 2 with title Output Signal contains an object of type line.

 N = 10;
 f = [0 0.02 0.04 0.06 0.08 0.1 0.25 0.5 0.75 1];
 g = [5 5 5 5 5 5 4 3 2 1];
 w = [2 2 2 2 2 2 1 1 1 1];
 hgd = fdesign.arbgrpdelay(N,f,g);
 Hgd = design(hgd,'iirlpnorm','Weights',w,'MaxPoleRadius',0.95,...
     'SystemObject',true);
 fvtool(Hgd,'Analysis','grpdelay') ;

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains an object of type line.

Выполните выравнивание многополосной задержки за пределами стоп-полосы.

Fs = 1e3;
Hcheby2 = design(fdesign.bandstop('N,Fst1,Fst2,Ast',10,150,400,60,Fs),'cheby2',...
    'SystemObject',true);
f1 = 0.0:0.5:150; % Hz
g1 = grpdelay(Hcheby2,f1,Fs).'/Fs; % seconds
f2 = 400:0.5:500; % Hz
g2 = grpdelay(Hcheby2,f2,Fs).'/Fs; % seconds
maxg = max([g1 g2]);
% Design an arbitrary group delay allpass filter to equalize the group
% delay of the bandstop filter. Use an order 18 multiband design and specify
% two bands.
hgd = fdesign.arbgrpdelay('N,B,F,Gd',18,2,f1,maxg-g1,f2,maxg-g2,Fs);
Hgd = design(hgd,'iirlpnorm','MaxPoleRadius',0.95,'SystemObject',true);
Hcascade = cascade(Hcheby2,Hgd);
hft = fvtool(Hcheby2,Hgd,Hcascade,'Analysis','grpdelay','Fs',Fs);
    legend(hft,'Original Bandstop Filter','Allpass Arbitrary Group Delay Filter',...
    'Delay Equalization', 'Location','North');

Figure Filter Visualization Tool - Group delay contains an axes and other objects of type uitoolbar, uimenu. The axes with title Group delay contains 3 objects of type line. These objects represent Original Bandstop Filter, Allpass Arbitrary Group Delay Filter, Delay Equalization.

Подробнее

свернуть все

Групповая задержка при проектировании фильтра дискретного времени

Частотная характеристика рационального дискретно-временного фильтра равна:

H (ejλ) = B (ejλ) A (ejü)

Аргумент частотной характеристики как функция угла, λ, называется фазовой характеристикой.

Отрицательным результатом первой производной аргумента относительно, является групповая задержка.

start( λ) = ddstartArg (H (ejλ))

Системы с нелинейными фазовыми откликами имеют непостоянную групповую задержку, которая вызывает дисперсию частотных составляющих сигнала. Это фазовое искажение может быть нежелательным, даже если амплитудное искажение, введенное фильтром, дает желаемый эффект. Иллюстрацию частотной дисперсии, возникающей в результате непостоянной групповой задержки, см. в разделе Проектирование фильтра произвольной групповой задержки.

В этих случаях можно каскадировать частотно-селективный фильтр с фильтром allpass, который компенсирует групповую задержку. Этот процесс часто называют выравниванием задержки.

Системы Allpass

Общая форма системной функции allpass с действительной импульсной характеристикой:

Хап (z) =∏k=1Mz−1−dk1−dkz−1∏k=1N (z 1 ck) (z 1 ck *) (1 ckz − 1) (1 − ck * z − 1)

где dk обозначает вещественные полюса, а ck обозначает комплексные полюса, которые встречаются в сопряженных парах.

Предыдущее уравнение демонстрирует, что системы allpass с действительными импульсными откликами имеют 2N + M нулей и полюсов. Полюса и нули встречаются попарно с взаимными величинами. Порядок фильтра всегда одинаков для числителя и знаменателя.

Поскольку fdesign.arbgrpdelay использует надежные структуры фильтров второго порядка (biquad) для реализации фильтра произвольной групповой задержки allpass, порядок фильтров должен быть четным.

Алгоритмы

fdesign.arbgrpdelay использует минимум p-ю итеративную оптимизацию нормы, описанную в [1].

Альтернативы

iirgrpdelay - возвращает фильтр произвольной групповой задержки allpass. iirgrpdelay функция возвращает числитель и коэффициенты знаменателя. Это поведение отличается от поведения fdesign.arbgrpdelay, который возвращает фильтр в секциях второго порядка. iirgrpdelay принимает только нормированные частоты.

Ссылки

[1] Антониу, А. Цифровая обработка сигналов: сигналы, системы и фильтры., Нью-Йорк: McGraw-Hill, 2006, стр. 719-771.

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