dsp.AllpassFilter

Односекционный или каскадный альпасовый фильтр

Описание

The dsp.AllpassFilter объект фильтрует каждый канал входа, используя реализации фильтра Allpass. Чтобы импортировать этот объект в Simulink®, используйте MATLAB® Системный блок.

Примечание

Поддержка массива ячеек для AllpassCoefficients, WDFCoefficients, и LatticeCoefficients был удален. Вместо этого используйте числовой массив N -by-1 или N -by-2. Для получения дополнительной информации см. раздел Вопросов совместимости.

Для фильтрации каждого канала входного входа:

  1. Создайте dsp.AllpassFilter Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

Allpass = dsp.AllpassFilter возвращает allpass фильтр System object™, Allpass, который фильтрует каждый канал входного сигнала независимо с помощью allpass-фильтра со структурой по умолчанию и коэффициентами.

пример

Allpass = dsp.AllpassFilter(Name,Value) возвращает allpass фильтр Системный объект, Allpass, с каждым набором свойств на заданное значение.

Свойства

расширить все

Если не указано иное, свойства являются нетронутыми, что означает, что вы не можете изменить их значения после вызова объекта. Объекты блокируются, когда вы вызываете их, и release функция разблокирует их.

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Можно задать структуру реализации внутреннего фильтра allpass как одну из | Minimum multiplier | Lattice | Wave Digital Filter. Каждая структура использует разный набор коэффициентов, независимо сохраненных в соответствующем свойстве объекта.

Задайте действительные коэффициенты allpass полиномиального фильтра. Задайте это свойство как N -by- 1 или N -by- 2 матрица N allpass первого или второго порядка. Значение по умолчанию задает стабильный allpass-фильтр второго порядка с полюсами и нулями, расположенными в ±

Настраиваемый: Да

Зависимости

Это свойство применимо только, когда Structure для свойства задано значение Minimum multiplier.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте действительные коэффициенты allpass в форме Wave Digital Filter. Задайте это свойство как N -by- 1 или N -by- 2 матрица N allpass первого или второго порядка. Все элементы должны иметь абсолютные значения, меньше чем или равные 1. Это значение является преобразованной версией значения по умолчанию AllpassCoefficients, вычисляется с помощью allpass2wdf(AllpassCoefficients). Эти коэффициенты задают такой же стабильный фильтр allpass второго порядка, как и когда Structure установлено в 'Minimum multiplier'.

Настраиваемый: Да

Зависимости

Это свойство применимо только, когда Structure для свойства задано значение Wave Digital Filter.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Задайте действительные или комплексные коэффициенты allpass в качестве коэффициентов отражения решетки. Задайте это свойство как вектор-строка (односекционное строение) или как вектор-столбец. Это значение является преобразованной и транспонированной версией значения по умолчанию AllpassCoefficients, вычисляется с помощью transpose(tf2latc([1 h.AllpassCoefficients])). Эти коэффициенты задают такой же стабильный фильтр allpass второго порядка, как и когда Structure установлено в 'Lattice'.

Настраиваемый: Да

Зависимости

Это свойство применимо только в том случае, если Structure для свойства задано значение Lattice.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да

Укажите, является ли последний раздел первым порядком или вторым порядком. Когда вы задаете TrailingFirstOrderSection на true, последний раздел рассматривается как первый порядок, и второй элемент последней строки матрицы N -by-2 игнорируется. Когда вы задаете TrailingFirstOrderSection на falseпоследний раздел рассматривается как второй порядок.

Использование

Синтаксис

Описание

пример

y = Allpass(x) фильтрует входной сигнал x использование фильтра allpass для создания выхода y. Каждый столбец x фильтруется независимо как отдельный канал с течением времени.

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

расширить все

Вход данных, заданный как вектор или матрица. Этот объект также принимает входы переменного размера. Когда объект заблокирован, можно изменить размер каждого входного канала, но вы не можете изменить количество каналов.

Типы данных: single | double
Поддержка комплексного числа: Да

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

расширить все

Отфильтрованный выход, возвращенный как вектор или матрица. Размер, тип данных и сложность выходного сигнала совпадают с размером входного сигнала.

Типы данных: double | single
Поддержка комплексного числа: Да

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

freqzЧастотная характеристика фильтра в дискретном времени Системного объекта
fvtoolВизуализация частотной характеристики фильтров DSP
impzИмпульсная характеристика фильтра в дискретном времени Системного объекта
infoИнформация о фильтре Системный объект
coeffsВозвращает фильтрация коэффициентов системного объекта в структуре
costОценка стоимости реализации фильтра Системный объект
grpdelayГрупповая задержка фильтра в дискретном времени Системного объекта
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Примечание.Этот пример выполняется только в R2016b или более поздней версии. Если вы используете более ранний релиз, замените каждый вызов функции на эквивалентный step синтаксис. Например, myObject (x) становится шагом (myObject, x).

Создайте фильтры Allpass

Fs  = 48000;    % in Hz
FL = 1024;
APF1 = dsp.AllpassFilter('AllpassCoefficients',...
    [-0.710525516540603   0.208818210000029]);
APF2 =  dsp.AllpassFilter('AllpassCoefficients',...
    [-0.940456403667957   0.6;...
    -0.324919696232907   0],...
    'TrailingFirstOrderSection',true);

Создайте оценку передаточной функции, чтобы оценить передаточную функцию между случайным входом и отфильтрованным выходом Allpass

TFE = dsp.TransferFunctionEstimator('FrequencyRange',...
    'onesided','SpectralAverages',2);

Создайте ArrayPlot, чтобы построить график величины отклика

AP = dsp.ArrayPlot('PlotType','Line','YLimits', [-80 5],...
    'YLabel','Magnitude (dB)','SampleIncrement', Fs/FL,...
    'XLabel','Frequency (Hz)','Title','Magnitude Response',...
    'ShowLegend', true,'ChannelNames',{'Magnitude Response'});

Фильтруйте Вход и покажите величину ответ предполагаемой передаточной функции между входом и отфильтрованным выходом

tic;
while toc < 5
    in  = randn(FL,1);
    out = 0.5.*(APF1(in) + APF2(in));
    A = TFE(in, out);
    AP(db(A));
end

Алгоритмы

расширить все

Передаточная функция allpass-фильтра задается как

H(z)=c(n)+c(n1)z1+...+zn1+c(1)z1+...+c(n)zn.

c - вектор allpass полиномиальных коэффициентов. Порядок, n, передаточной функции - это длина вектора c.

В форме минимального множителя и цифровой форме волны фильтр allpass реализован как каскад секций второго порядка (biquad) или секций первого порядка. Когда коэффициенты заданы как матрица N-на-2, каждая строка матрицы задает коэффициенты фильтра второго порядка. Последний элемент последней строки может быть проигнорирован на основе конечной настройки первого порядка. Когда коэффициенты заданы как матрица N -на-1, каждый элемент матрицы задает коэффициент фильтра первого порядка. Каскад всех секций фильтра образует allpass фильтр.

В форме решетки коэффициенты заданы как вектор.

Эти структуры являются в вычислительном отношении более экономичными и структурно более стабильными по сравнению с типовыми фильтрами БИХ, такими как df1, df1t, df2, df2t. Для всех структур allpass-фильтр может быть односекционным или многосекционным (каскадным) фильтром. Различные разделы могут иметь различные порядки, но все они реализованы в соответствии с одной структурой.

Вопросы совместимости

расширить все

Ошибки, начинающиеся в R2018b

Ссылки

[1] Regalia, Philip A. and Mitra Sanjit K. and Vaidyanathan, P. P. (1988) «The Digital All-Pass Filter: AVersatile Signal Processing Building Block». Материалы IEEE, том 76, № 1, 1988, стр. 19-37

[2] М. Лутовац, Д. Тошич, Б. Эванс, создание фильтра для обработки сигналов с использованием MATLAB и Mathematica. Верхняя Седл-Ривер, Нью-Джерси: Prentice Hall, 2001.

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

.
Введенный в R2013a