dsp.IIRHalfbandInterpolator

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

Описание

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

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

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

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

Чтобы повысить и интерполировать свои данные:

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

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

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

Создание

Описание

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

пример

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

Пример: iirhalfbandinterp = dsp.IIRHalfbandInterpolator('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

Опция использовать объект как банк фильтров синтеза, заданная как логическое значение. Если это свойство 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 - количество участков альпаса первого или второго порядка.

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

Зависимости

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

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

Описание

пример

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

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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

c = coeffs(IIRHalfbandInterp);

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

fvtool(IIRHalfbandInterp,'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 кГц. Порядок фильтра равен 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] 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