dsp. IIRHalfbandDecimator

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

Описание

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

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

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

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

Отфильтровать и субдискретизировать ваши данные:

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

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

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

Создание

Синтаксис

iirhalfbanddecim = dsp.IIRHalfbandDecimator
iirhalfbanddecim = dsp.IIRHalfbandDecimator(Name,Value)

Описание

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

пример

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

Пример: iirhalfbanddecim = dsp.IIRHalfbandDecimator('Specification','Filter order and stopband attenuation') создает полуполосу IIR decimator объект с набором порядка фильтра к 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

Внутренние 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 фильтруют коэффициенты второго ответвления в Цифровой форме Фильтра Волны, заданной как пара, разделенная запятой, состоящая из 'WDFCoefficients2' и 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'.

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

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

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

Синтаксис

ylow = iirhalfbanddecim(x)
[ylow,yhigh] = iirhalfbanddecim(x)

Описание

пример

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 decimator выходной параметр, возвращенный как вектор-столбец или матрица. Вывод, ylow является lowpass полуполосой отфильтрованная и субдискретизируемая версия входа x. Из-за природы полуполосы фильтра, фактор субдискретизации всегда равняется 2.

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

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

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

c = coeffs(IIRHalfbandDecim);

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

fvtool(IIRHalfbandDecim,'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).

Создайте полуполосу decimator для данных, выбранных на уровне 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] Ленг, Проект Фильтра М. Аллпэсса и Приложения. Транзакции IEEE на Обработке сигналов. Издание 46, № 9, сентябрь 1998, стр 2505–2514.

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

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

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

Введенный в R2015b