dsp.IIRHalfbandDecimator

Децимируйте по два раза, используя полифазный БИХ

Описание

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

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

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

Можно также использовать dsp.IIRHalfbandDecimator объект для реализации фрагмента анализа двухдиапазонной группы фильтров для фильтрации сигнала в поддиапазоны lowpass и highpass.

Чтобы фильтровать и понижать значения данных:

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

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

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

Создание

Описание

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

пример

iirhalfbanddecim = dsp.IIRHalfbandDecimator(Name,Value) возвращает БИХ полуполосы дециматор с дополнительными свойствами, заданными одним или несколькими Name,Value аргументы в виде пар.

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в 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

Структура реализации внутреннего фильтра Allpass, заданная как 'Minimum multiplier' или 'Wave Digital Filter'.

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

Зависимости

Это свойство применяется только при установке 'Specification' на 'Coefficients'. Каждая структура использует разный набор коэффициентов, независимо сохраненный в соответствующем свойстве объекта.

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

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

Зависимости

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

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

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

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

Зависимости

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

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

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

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

Зависимости

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

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

Коэффициенты фильтра Allpass второй ветви в форме Wave Digital Filter, заданные как разделенная разделенными запятой парами, состоящая из 'WDFCoefficients2' и a N -by - 1 или N -by- 2 матрица. N - количество участков альпаса первого или второго порядка. Каждый элемент должен иметь абсолютное значение, меньше чем или равное 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'.

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

Описание

пример

ylow = iirhalfbanddecim(x) фильтрует входной сигнал, x, используя БИХ полуполосы фильтр, iirhalfbanddecimи понижает выходной параметр в 2 раза.

пример

[ylow,yhigh] = iirhalfbanddecim(x) вычисляет ylow и yhigh, банка фильтров анализа, iirhalfbanddecim для входных x. Входная матрица Ki -by N рассматривается как N независимые каналы. Системный объект генерирует два дополнительных по мощности выходных сигнала путем сложения и вычитания двух выходов полифазной ветви соответственно. ylow и yhigh имеют одинаковый размер (Ko -by - N) и тип данных. Ko = Ki/2, где 2 - десятикратное уменьшение.

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

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

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

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

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

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

Lowpass поддиапазон выхода дециматора, возвращенный как вектор-столбец или матрица. Выход, ylow - lowpass halfband, фильтрация и понижающая дискретизацию версии входного x. Из-за полуполосного характера фильтра коэффициент понижающей дискретизации всегда равен 2.

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

Поддиапазон Highpass дециматора выхода, возвращенный как вектор-столбец или матрица. Выход, yhigh является высокочастотной полуполосной отфильтрованной и понижающей дискретизации версии входного x. Из-за полуполосного характера фильтра коэффициент понижающей дискретизации всегда равен 2.

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

IIRHalfbandDecim = dsp.IIRHalfbandDecimator(...
                        'DesignMethod', 'Quasi-linear phase');

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

c = coeffs(IIRHalfbandDecim);

Постройте график величины и фазового отклика.

fvtool(IIRHalfbandDecim,'Analysis','freq')

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

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

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

Примечание: The audioDeviceWriter Системная object™ не поддерживается в MATLAB Online.

Настройте считыватель аудио файла, банк фильтров анализа, средство записи аудио устройства и интерполяционный фильтр. Частота дискретизации аудио данных составляет 22050 Гц. Полудиапазонный фильтр имеет порядок 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)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line.

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

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

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

release(afr);           
release(ap);

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

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

Примечание: The audioDeviceWriter Системная object™ не поддерживается в MATLAB Online.

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

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'});

Считывайте аудио 1024 выборки за раз. Фильтрация входов для получения 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 кГц. Используйте проект минимального порядка с шириной перехода 2 кГц и затуханием в полосе задерживания 60 дБ.

IIRHalfbanddecim = dsp.IIRHalfbandDecimator(...
    'Specification','Transition width and stopband attenuation',...
    'TransitionWidth',2000,'StopbandAttenuation',60,'SampleRate',44.1e3);

Фильтрация двухканального входа в поддиапазоны lowpass и highpass.

x = randn(1024,2);
[ylow,yhigh] = IIRHalfbanddecim(x);

Алгоритмы

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

Ссылки

[1] Lang, M. Allpass Filter Design and Applications. Транзакции IEEE по обработке сигналов. Том 46, № 9, сентябрь 1998, стр. 2505-2514.

[2] Harris, F.J. Multirate Signal Processing for Communication Systems. Prentice Hall. 2004, стр 208–209.

[3] Regalia, Phillip A., Sanjit K. Mitra, and P. P. Vaidyanathan. Цифровой универсальный фильтр: универсальный базовый блок обработки сигналов. Материалы IEEE. Том 76, № 1, 1988, стр. 19-37.

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

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