dsp. CoupledAllpassFilter

Связанный allpass БИХ-фильтр

Описание

Объект dsp.CoupledAllpassFilter реализует двойную структуру фильтра allpass, состоявшую из двух фильтров allpass, соединенных параллельно. Каждое ответвление allpass может содержать несколько разделов. Полный фильтр вывод вычисляется путем добавления вывода двух соответствующих ответвлений. Дополнительный второй выходной параметр может также быть возвращен, который является степенью, дополнительной к первому. Например, с точки зрения частотного диапазона, если первый вывод реализует фильтр lowpass, второй вывод реализует степень дополнительный фильтр highpass. Для действительных сигналов степень дополнительный вывод вычисляется путем вычитания вывода второго ответвления сначала. dsp.CoupledAllpassFilter поддерживает дважды - и плавающая точка с одинарной точностью и позволяет вам выбирать между различными структурами реализации. Эта Система object™ также поддерживает комплексные коэффициенты, многоканальный вход переменной длины и настраиваемые содействующие значения фильтра.

Отфильтровать каждый канал входа:

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

caf = dsp.CoupledAllpassFilter
caf = dsp.CoupledAllpassFilter(AllpassCoeffs1,AllpassCoeffs2)
caf = dsp.CoupledAllpassFilter(struc,AllpassCoeffs1,AllpassCoeffs2)
caf = dsp.CoupledAllpassFilter(Name,Value)

Описание

caf = dsp.CoupledAllpassFilter возвращается двойной allpass фильтруют Системный объект, caf, который фильтрует каждый канал входного сигнала независимо. Двойной фильтр allpass использует внутренние структуры по умолчанию и коэффициенты.

пример

caf = dsp.CoupledAllpassFilter(AllpassCoeffs1,AllpassCoeffs2) возвращается двойной allpass фильтруют Системный объект, caf, с набором Structure к 'Minimum multiplier', набором AllpassCoefficients1 к AllpassCoeffs1 и набором AllpassCoefficients2 к AllpassCoeffs2.

caf = dsp.CoupledAllpassFilter(struc,AllpassCoeffs1,AllpassCoeffs2) возвращается двойной allpass фильтруют Системный объект, caf, с набором Structure к struc и соответствующим содействующим набором к AllpassCoeffs1 и AllpassCoeffs2. struc может быть 'Minimum multiplier' | 'Wave Digital Filter' | 'Lattice'.

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

Свойства

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

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

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

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

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

Задайте полиномиальные коэффициенты фильтра для первого ответвления allpass. Это свойство может принять значения любой в форме вектора - строки (настройка одно раздела) или массив ячеек со столькими же ячеек сколько разделы фильтра.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство Structure на 'Minimum multiplier'.

Типы данных: single | double

Задайте Цифровые коэффициенты Фильтра Волны для первого ответвления allpass. Это свойство может принять значения любой в форме вектора - строки (настройка одно раздела) или массив ячеек со столькими же ячеек сколько разделы фильтра.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство Structure на 'Wave Digital Filter'.

Типы данных: single | double

Задайте коэффициенты решетки allpass для первого ответвления allpass. Это свойство может принять значения любой в форме вектора - строки (настройка одно раздела) или массив ячеек со столькими же ячеек сколько разделы фильтра.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство Structure на 'Lattice'.

Типы данных: single | double

Целое число задержки касается в верхней ветви, заданной как положительный целочисленный скаляр.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство PureDelayBranch на true.

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

Gain1 является отдельным усилением фазы ответвления. Это свойство может принять только значения, равные '1', '–1', '0+i' или '0–i'. Это свойство является ненастраиваемым.

Типы данных: char

Задайте полиномиальные коэффициенты фильтра для второго ответвления allpass. Это свойство может принять значения любой в форме вектора - строки (настройка одно раздела) или массив ячеек со столькими же ячеек сколько разделы фильтра.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство Structure на 'Minimum multiplier'.

Типы данных: single | double

Задайте Цифровые коэффициенты Фильтра Волны для второго ответвления allpass. Это свойство может принять значения любой в форме вектора - строки (настройка одно раздела) или массив ячеек со столькими же ячеек сколько разделы фильтра.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство Structure на 'Wave Digital Filter'.

Типы данных: single | double

Задайте коэффициенты решетки allpass для второго ответвления allpass. Это свойство может принять значения любой в форме вектора - строки (настройка одно раздела) или массив ячеек со столькими же ячеек сколько разделы фильтра.

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

Зависимости

Это свойство применимо, только если вы устанавливаете свойство Structure на 'Lattice'.

Типы данных: single | double

Задайте значение независимого усиления фазы, примененного к ответвлению 2. Это свойство может принять только значения, равные '1', '–1', '0+i' или '0–i'. Это свойство является ненастраиваемым.

Типы данных: char

Задайте значение усиления фазовращателя в комплексно-сопряженной форме в каждом из двух ответвлений, и в комплексной содействующей настройке. Абсолютным значением этого свойства должен быть 1, и его значением по умолчанию является 1.

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

Зависимости

Это свойство применимо только, когда выбранное свойство Structure поддерживает комплексные коэффициенты.

Типы данных: single | double

Если вы устанавливаете PureDelayBranch на true, имущественные ценности, коэффициенты для первого ответвления allpass отключены, и Задержка становится активированной. Можно использовать это свойство улучшать производительность, когда одно из двух ответвлений allpass, как известно, является чистой задержкой (например, для проектов полуленточного фильтра)

Типы данных: логический

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

Зависимости

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

Типы данных: логический

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

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

y = caf(x)
[y,ypc] = caf(x)

Описание

пример

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

[y,ypc] = caf(x) также возвращает ypc, степень дополнительный сигнал к первичному выводу y.

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

Поймите Баттерворта lowpass фильтр порядка 3. Используйте двойную allpass структуру с внутренней минимальной структурой множителя.

Fs = 48000;    % in Hz
Fc = 12000;    % in Hz
frameLength = 1024;
[b, a] = butter(3,2*Fc/Fs);
AExp = [freqz(b,a,frameLength/2); NaN];
[c1, c2] = tf2ca(b,a);
caf = dsp.CoupledAllpassFilter(c1(2:end),c2(2:end));
tfe = dsp.TransferFunctionEstimator('FrequencyRange', 'onesided',...
    'SpectralAverages', 2);
aplot = dsp.ArrayPlot('PlotType', 'Line',...
    'YLimits', [-40 5],...
    'YLabel', 'Magnitude (dB)',...
    'SampleIncrement', Fs/frameLength,...
    'XLabel', 'Frequency (Hz)',...
    'Title', 'Magnitude Response',...
    'ShowLegend', true,'ChannelNames',{'Actual','Expected'});
Niter = 200;
for k = 1:Niter
    in = randn(frameLength,1);
    out = caf(in);
    A = tfe(in,out);
    aplot(db([A,AExp]));
end

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

Удалите низкочастотную синусоиду с помощью эллиптического проекта фильтра highpass, реализованного через двойную allpass структуру.

Инициализировать

Fs = 1000;
f1 = 50; f2 = 100;
Fpass = 70; Apass = 1;
Fstop = 60; Astop = 80;
filtSpecs = fdesign.highpass(Fstop,Fpass,Astop,Apass,Fs);
hpSpec = design(filtSpecs,'ellip','FilterStructure','cascadeallpass',...
    'SystemObject',true);
frameLength = 1000;
nFrames = 100;
sine   = dsp.SineWave('Frequency',[f1,f2],'SampleRate',Fs,...
  'SamplesPerFrame',frameLength); % Input composed of two sinusoids.
sa = dsp.SpectrumAnalyzer('SampleRate',Fs,'YLimits',[-150 30],...
  'PlotAsTwoSidedSpectrum',false,'ShowLegend',true,...
  'FrequencyResolutionMethod', 'WindowLength','WindowLength',1000,...
  'FFTLengthSource', 'Property','FFTLength', 1000,...
  'Title','Original (Channel 1) Filtered (Channel 2)',...
  'ChannelNames',{'Original','Filtered'});

Моделировать

for k = 1:nFrames
  original = sum(sine(),2); % Add the two sinusoids together
  filtered = hpSpec(original);
  sa([original,filtered]);
end

Разработайте Баттерворта lowpass фильтр порядка 3. Используйте двойную allpass структуру с внутренней минимальной структурой множителя.

Fs = 48000;    % in Hz
Fc = 12000;    % in Hz
frameLength = 1024;
[b,a] = butter(3,2*Fc/Fs);
AExp = [freqz(b,a,frameLength/2); NaN];
[c1,c2] = tf2ca(b,a);
caf = dsp.CoupledAllpassFilter(c1(2:end),c2(2:end));

Используя опцию 'SubbandView' dsp.CoupledAllpassFilter, можно визуализировать фильтр lowpass вывод, степень дополнительный фильтр highpass вывод или оба использования fvtool.

Чтобы просмотреть фильтр lowpass вывод, установите 'SubbandView' на 1.

fvtool(caf,'SubbandView',1,'Fs',Fs)

Чтобы просмотреть фильтр highpass вывод, установите 'SubbandView' на 2.

fvtool(caf,'SubbandView',2,'Fs',Fs)

Чтобы просмотреть обоих выходные параметры, установите 'SubbandView' на 'all', [1 2] или [1; 2].

fvtool(caf,'SubbandView','all','Fs',Fs);

Алгоритмы

Следующие три фигуры обобщают основные структуры, поддержанные dsp.CoupledAllpassFilter.

  • Минимальный множитель и WDF

  • Решетка

  • Образуйте решетку с комплексно-сопряженными коэффициентами

Ссылки

[1] Регалии, Филип А., Mitra, Сэнджит К. и П.П Вэйдьянэзэн “Цифровой Фильтр все-Передачи: Универсальный Стандартный блок Обработки сигналов”. Продолжения IEEE 1988, Издания 76, № 1, стр 19–37.

[2] Mitra, Сэнджит К. и Джеймс Ф. Кайзер, "Руководство для цифровой обработки сигналов" Нью-Йорк: John Wiley & Sons, 1993.

Введенный в R2013b