exponenta event banner

dsp. AllpassFilter

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

Описание

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) возвращает объект System фильтра allpass, Allpass, каждое свойство имеет заданное значение.

Свойства

развернуть все

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

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

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

Зависимости

Это свойство применимо только в том случае, если 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
Поддержка комплексного номера: Да

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

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

release(obj)

развернуть все

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

Примеры

свернуть все

Примечание.Этот пример выполняется только в 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 (n 1) z 1 +... + z n1 + c (1) z − 1 +... + c (n) z − n.

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

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

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

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

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

развернуть все

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

Ссылки

[1] Регалии, Филипп А. и Митра Санджит К. и Вайдьянатхан, П. П. (1988) «Цифровой всепроходной фильтр: строительный блок обработки сигналов AVersatile». Материалы IEEE, том 76, № 1, 1988 год, стр. 19-37

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

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

.
Представлен в R2013a