dsp.CoupledAllpassFilter

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

Описание

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

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

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

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

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

Создание

Описание

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 Используя Системные объекты.

Задайте внутреннюю структуру ветвей 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, как известно, является чистой задержкой (e.g. для проектов полуленточного фильтра)

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

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

Зависимости

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

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

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

Синтаксис

Описание

пример

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