dsp. IIRHalfbandInterpolator

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

Описание

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

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

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

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

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

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

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

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

Создание

Синтаксис

iirhalfbandinterp = dsp.IIRHalfbandInterpolator
iirhalfbandinterp = dsp.IIRHalfbandInterpolator(Name,Value)

Описание

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

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

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

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

Синтаксис

y = iirhalfbandinterp(x1)
y = iirhalfbandinterp(x1,x2)

Описание

пример

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

пример

y = iirhalfbandinterp(x1,x2) реализует набор фильтров синтеза полуполосы для входных параметров x1 и x2. x1 является 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Сбросьте внутренние состояния Системного объекта

Примеры

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

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