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-th процедуры оптимизации нормы, чтобы минимизировать ошибку фазового отклика [1].

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

D = fdesign.arbgrpdelay(SPEC,SPEC1,SPEC2,...) инициализирует allpass произвольный объект спецификации фильтров групповой задержки техническими требованиями SPEC1,SPEC2,.... Смотрите СПЕЦИФИКАЦИЮ для описания поддержанных спецификаций.

D = fdesign.arbgrpdelay(N,F,Gd) задает allpass произвольный фильтр групповой задержки. Порядок фильтра равен N, вектор частоты равняется F, и вектор групповой задержки равняется Gd. Смотрите СПЕЦИФИКАЦИЮ для описания порядка фильтра, вектора частоты и входных параметров вектора групповой задержки. См. Проект в качестве примера Фильтр Allpass С Произвольной Групповой задержкой примера с помощью этого синтаксиса.

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

Советы

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

Входные параметры

SPEC

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

  • 'N,F,Gd'

  • 'N,B,F,Gd'

Технические требования фильтра определяются следующим образом:

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

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

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

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

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

  • B — Количество диапазонов частот. Если вы используете эту спецификацию, необходимо задать частоту и вектор групповой задержки для каждой полосы. Объединение векторов частоты должно лежать в диапазоне от [0,1] в нормированной частоте, или [0, Фс/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. Последним элементом должна быть частота Найквиста, Фс/2.

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

D

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

Используйте normalizefreq метод, чтобы изменить NormalizedFrequency свойство после конструкции.

Примеры

свернуть все

Создайте сигнал, состоящий из двух дискретного времени оконные синусоиды (пакеты волны) с непересекающейся поддержкой времени, чтобы проиллюстрировать дисперсию частоты. Одна синусоида дискретного времени имеет частоту радианов/выборки пи/2, и другой имеет частоту радианов/выборки пи/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));

Задержите радианы/выборку пи/2 100 выборками

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

Визуализируйте групповую задержку

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

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

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');

 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') ;

Выполните многополосную эквализацию задержки вне полосы задерживания.

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');

Больше о

свернуть все

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

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

H(ejω)=B(ejω)A(ejω)

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

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

τ(ω)=ddωArg(H(ejω))

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

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

Системы Allpass

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

Hap(z)=k=1Mz1dk1dkz1k=1N(z1ck)(z1ck*)(1ckz1)(1ck*z1)

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

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

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

Алгоритмы

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

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

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

Ссылки

[1] Antoniou, A. Цифровая обработка сигналов: Сигналы, Системы и Фильтры., Новый York:McGraw-выступ, 2006, стр 719–771.

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