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) задает частоту дискретизации в hertz как конечный скаляр. Если вы не задаете частоту дискретизации, все частоты являются нормированными частотами, и значения групповой задержки находятся в выборках. Если вы задаете частоту дискретизации, значения групповой задержки указаны в секундах.

Совет

Если ваша произвольная групповая задержка проекта вызывает ошибку 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, в Hertz, задержки группы в выборках. Если вы задаете частоту дискретизации, задержки группы указываются в секундах.

  • 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ω)

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

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

τ(ω)=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-й нормы, описанную в [1].

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

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

Ссылки

[1] Antoniou, A. Digital Signal Processing: Signals, Systems, and Filters., New York: McGraw-Hill, 2006, pp. 719-771.

Введенный в R2011b