dsp.IIRHalfbandDecimator

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

Описание

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

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

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

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

Отфильтровать и проредить ваши данные:

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

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

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

Создание

Описание

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'.

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

Описание

пример

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Сбросьте внутренние состояния Системного объекта

Примеры

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

Создайте минимальный порядок децимирующий фильтр полуполосы IIR lowpass для данных, произведенных на уровне 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