dsp.IIRHalfbandInterpolator

Интерполируйте фактором двух использующих многофазных БИХ

Описание

dsp.IIRHalfbandInterpolator Система object™ выполняет эффективную многофазную интерполяцию входного сигнала фактором два. Чтобы спроектировать полуленточный фильтр, можно задать объект использовать эллиптический проект или квазилинейный проект фазы. Объект использует эти методы разработки вычислить коэффициенты фильтра. Чтобы отфильтровать входные параметры, объект использует многофазную структуру. allpass просачивается, многофазная структура находится в минимальной форме множителя.

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

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

Можно также использовать dsp.IIRHalfbandInterpolator возразите, чтобы реализовать фрагмент синтеза банка 2D ленточного фильтра, чтобы синтезировать сигнал от lowpass и highpass поддиапазонов.

Сверхдискретизировать и интерполировать ваши данные:

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

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

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

Создание

Описание

iirhalfbandinterp = dsp.IIRHalfbandInterpolator возвращает фильтр интерполяции полуполосы IIR, iirhalfbandinterp, с настройками по умолчанию. При настройках по умолчанию Системный объект сверхдискретизировал и интерполирует входные данные с помощью частоты полуполосы 22050 Гц, ширина перехода 4100 Гц и затухание в полосе задерживания 80 дБ.

пример

iirhalfbandinterp = dsp.IIRHalfbandInterpolator(Name,Value) возвращает интерполятор полуполосы IIR, с дополнительными свойствами, заданными одним или несколькими Name,Value парные аргументы.

Пример: iirhalfbandinterp = dsp.IIRHalfbandInterpolator('Specification','Filter order and stopband attenuation') создает объект интерполятора полуполосы IIR с набором порядка фильтра к 9 и набор затухания в полосе задерживания к 80 дБ.

Свойства

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

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

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

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

Параметры создания фильтра, заданные как вектор символов. Когда вы устанавливаете Specification к одной из опций создания фильтра можно задать параметры создания фильтра с помощью соответствующего FilterOrder, StopbandAttenuation, и TransitionWidth свойства. Кроме того, можно задать метод разработки с помощью DesignMethod. Когда вы устанавливаете Specification к 'Coefficients', можно задать коэффициенты непосредственно.

Порядок БИХ-полуленточного фильтра, заданного как положительное скалярное целое число. Если вы устанавливаете DesignMethod к 'Elliptic', затем FilterOrder должно быть нечетное целое число, больше, чем одно. Если вы устанавливаете DesignMethod к 'Quasi-linear phase', затем FilterOrder должен быть кратным четыре.

Зависимости

Это свойство применяется, когда вы устанавливаете Specification к 'Filter order and stopband attenuation' или 'Filter order and transition width'.

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

Минимальное затухание, необходимое в полосе задерживания БИХ-полуленточного фильтра, заданного как положительный действительный скаляр. Модули находятся в дБ.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к 'Filter order and stopband attenuation' или 'Transition width and stopband attenuation'.

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

Ширина перехода БИХ-полуленточного фильтра, заданного как положительный действительный скаляр. Модули находятся в Гц. Значение ширины перехода должно быть меньше половины входной частоты дискретизации.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к 'Transition width and stopband attenuation' или 'Filter order and transition width'.

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

Метод разработки для БИХ-полуленточного фильтра, заданного как 'Elliptic' или 'Quasi-linear phase'. Когда свойство установлено в 'Quasi-linear phase', первая ветвь многофазной структуры является чистой задержкой, которая приводит к приблизительно линейному фазовому отклику.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к любому принятому значению кроме 'Coefficients'.

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

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к любому принятому значению кроме 'Coefficients'.

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

Опция, чтобы использовать объект в качестве набора фильтров синтеза, заданного как логическое значение. Если этим свойством является false, dsp.IIRHalfbandInterpolator действия как интерполятор. Если этим свойством является true, затем dsp.IIRHalfbandInterpolator действия как набор фильтров синтеза и алгоритм принимают два входных параметров: lowpass и highpass поддиапазоны.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к любому принятому значению кроме 'Coefficients'.

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

Это свойство не является настраиваемым.

Зависимости

Это свойство применяется только, когда вы устанавливаете 'Specification' к 'Coefficients'.

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

Это свойство не является настраиваемым.

Зависимости

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

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

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

Это свойство не является настраиваемым.

Зависимости

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

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

Отметьте, чтобы заставить первый allpass перейти задержка, заданная как логический скаляр. Когда это свойство верно, первая ветвь обработана как чистая задержка и свойства AllpassCoefficients1 и WDFCoefficients1 не применяться.

Это свойство не является настраиваемым.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к 'Coefficients'.

Длина первой задержки ветви, заданной как конечная положительная скалярная величина. Значение этого свойства задает количество выборок, которыми можно задержать вход к первой ветви.

Это свойство не является настраиваемым.

Зависимости

Это свойство применимо только, когда вы устанавливаете 'Specification' к 'Coefficients' и HasPureDelayBranch к 1.

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

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

Это свойство не является настраиваемым.

Зависимости

Это свойство применяется только, когда вы устанавливаете Specification к 'Coefficients'.

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

Описание

пример

y = iirhalfbandinterp(x1) сверхдискретизировал два и интерполирует входной сигнал x1 с помощью интерполятора полуполосы IIR, iirhalfbandinterp.

пример

y = iirhalfbandinterp(x1,x2) реализует набор фильтров синтеза полуполосы для входных параметров x1 и x2x1 выход lowpass аналитического набора фильтров полуполосы и x2 highpass выход аналитического набора фильтров полуполосы. dsp.IIRHalfbandInterpolator реализует набор фильтров синтеза только когда FilterBankInputPort свойством является true.

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

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

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

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

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

Размер, тип данных и сложность обоих входные параметры должны быть тем же самым.

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

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

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

Выход интерполятора, возвращенного как вектор-столбец или матрица. Количество строк в интерполяторе выход является дважды количеством строк во входном сигнале.

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

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

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

release(obj)

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

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

Примеры

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

Создайте минимальный порядок фильтр интерполяции полуполосы IIR lowpass для данных, произведенных на уровне 44,1 кГц. Фильтр имеет ширину перехода 4,1 кГц и затухание в полосе задерживания 80 дБ.

IIRHalfbandInterp = dsp.IIRHalfbandInterpolator(...
                        'DesignMethod', 'Quasi-linear phase');

Получите коэффициенты фильтра

c = coeffs(IIRHalfbandInterp);

Постройте Величину и Фазовый отклик

fvtool(IIRHalfbandInterp,'Analysis','freq')

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

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным step синтаксис. Например, obj(x) становится step(obj,x).

Примечание: dsp.AudioFileReader и audioDeviceWriter Системные объекты не поддержаны в MATLAB Online.

Настройте читателя звукового файла, аналитический набор фильтров, средство записи аудио устройства и фильтр интерполяции. Уровень выборки аудиоданных составляет 22 050 Гц. Полуленточный фильтр имеет порядок 21 и ширину перехода 2 кГц.

afr = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);

filterspec = 'Filter order and transition width';
Order = 21;
TW = 2000;

IIRHalfbandDecim = dsp.IIRHalfbandDecimator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',afr.SampleRate);

IIRHalfbandInterp = dsp.IIRHalfbandInterpolator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',afr.SampleRate/2);

ap = audioDeviceWriter('SampleRate',afr.SampleRate);

Просмотрите ответ величины полуленточного фильтра.

fvtool(IIRHalfbandDecim)

Считайте речевой сигнал из звукового файла в системах координат 1 024 выборок. Отфильтруйте речевой сигнал в lowpass и highpass поддиапазоны с частотой полуполосы 5 512,5 Гц. Восстановите приближение lowpass речевого сигнала путем интерполяции поддиапазона lowpass. Проигрывайте отфильтрованный выход.

while ~isDone(afr)
  audioframe = afr();
  xlo = IIRHalfbandDecim(audioframe);
  ylow = IIRHalfbandInterp(xlo);
  ap(ylow);
end

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

release(afr);           
release(ap);

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

Примечание: Если вы используете R2016a или более ранний релиз, заменяете каждый вызов объекта с эквивалентным синтаксисом шага. Например, obj (x) становится шагом (obj, x).

Примечание: dsp.AudioFileReader и audioDeviceWriter Системные объекты не поддержаны в MATLAB Online.

Настройте считывающее устройство звукового файла и средство записи аудио устройства. Создайте полуполосу IIR decimator и интерполятор. Наконец, настройте спектр анализатор, чтобы отобразить спектры мощности ввода и вывода набора фильтров.

AF = dsp.AudioFileReader('speech_dft.mp3','SamplesPerFrame',1024);
AP = audioDeviceWriter('SampleRate',AF.SampleRate);

filterspec = 'Filter order and transition width';
Order = 51;
TW = 2000;

IIRHalfbandDecim = dsp.IIRHalfbandDecimator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',AF.SampleRate);

IIRHalfbandInterp = dsp.IIRHalfbandInterpolator(...
    'Specification',filterspec,'FilterOrder',Order,...
    'TransitionWidth',TW,'SampleRate',AF.SampleRate/2,...
    'FilterBankInputPort',true);

SpecAna = dsp.SpectrumAnalyzer('SampleRate',AF.SampleRate,...
    'PlotAsTwoSidedSpectrum',false,'ReducePlotRate',false,...
    'ShowLegend',true,...
    'ChannelNames',{'Input signal','Filtered output signal'});

Считайте аудио 1 024 выборки за один раз. Отфильтруйте вход, чтобы получить lowpass и highpass сигналы поддиапазона, подкошенные фактором два. Это - аналитический набор фильтров. Используйте интерполятор полуполосы в качестве набора фильтров синтеза. Отобразите рабочий спектр мощности аудиовхода и выход набора фильтров синтеза. Проигрывайте выход.

while ~isDone(AF)
    audioInput = AF();
    [xlo,xhigh] = IIRHalfbandDecim(audioInput);
    audioOutput = IIRHalfbandInterp(xlo,xhigh);
    spectrumInput = [audioInput audioOutput];
    SpecAna(spectrumInput);
    AP(audioOutput);
end

release(AF);
release(AP);
release(SpecAna);

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

Создайте фильтр интерполяции полуполосы для данных, произведенных на уровне 44,1 кГц. Порядок фильтра 51 с шириной перехода 4,1 кГц. Используйте фильтр, чтобы сверхдискретизировать и интерполировать многоканальный вход.

Fs = 44.1e3; 
filterspec = 'Filter order and transition width';
Order = 51;
TW = 4.1e3;  
iirhalfbandinterp = dsp.IIRHalfbandInterpolator(...
                                               'Specification',filterspec,...
                                               'FilterOrder',Order,...
                                               'TransitionWidth',TW,...
                                                'SampleRate',Fs);

x = randn(1024,4);
y = iirhalfbandinterp(x);

Алгоритмы

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

Ссылки

[1] Ленг, Создание фильтра М. Аллпэсса и Приложения. Транзакции IEEE на Обработке сигналов. Издание 46, № 9, сентябрь 1998, стр 2505–2514.

[2] Харрис, Обработка сигналов Ф.Дж. Малтирэйта для Систем связи. Prentice Hall. 2004, стр 208–209.

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

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

Введенный в R2015b