dsp.FIRInterpolator

Полифазная конечная импульсная характеристика интерполятор

Описание

The dsp.FIRInterpolator Система object™ повышает вход по целому числу коэффициенту повышающей дискретизации L вдоль первой размерности. Интерполятор конечной импульсной характеристики (как показано на схеме) концептуально состоит из усилителя, за которым следует конечная импульсная характеристика антивизуальный фильтр, который обычно является приближением идеальной полосовой интерполяции фильтра. Чтобы спроектировать антивизуальный фильтр, используйте designMultirateFIR функция.

Усилитель увеличивает каждый канал входа до более высокой скорости, вставляя L -1 нули между выборками. Фильтр конечной импульсной характеристики прямой формы, который следует, фильтрует каждый канал данных с повышенной дискретизацией. Полученный сигнал дискретного времени имеет частоту дискретизации, которая L умножается на исходную частоту дискретизации.

FIR interpolator contains an upsampler followed by an anti-imaging FIR filter.

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

Чтобы повысить входной вход:

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

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

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

При определенных условиях этот системный объект также поддерживает генерацию кода SIMD. Для получения дополнительной информации смотрите Генерация кода.

Создание

Описание

firinterp = dsp.FIRInterpolator возвращает конечную импульсную характеристику интерполятор, firinterp, который увеличивает значение входного сигнала в 3 раза и применяет конечная импульсная характеристика для интерполяции выхода.

пример

firinterp = dsp.FIRInterpolator(interpFactor,num) возвращает конечную импульсную характеристику интерполятор с целым числом InterpolationFactor значение свойства установлено в interpFactor и Numerator значение свойства установлено в num.

firinterp = dsp.FIRInterpolator(___,Name,Value) возвращает конечную импульсную характеристику объект интерполятора с каждым заданным набором свойств к заданному значению. Заключайте каждое имя свойства в кавычки. Можно использовать этот синтаксис с любыми предыдущими комбинациями входных аргументов.

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

Задайте целочисленный коэффициент L, которым можно увеличить частоту дискретизации входного сигнала. Реализация полифазы использует L полифазных подфильтров для вычисления сверток с более низкой частотой дискретизации. Интерполятор конечной импульсной характеристики задерживает и чередует эти свертки с более низкой скоростью, чтобы получить выход с более высокой скоростью.

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

Источник коэффициента конечной импульсной характеристики, заданный как:

  • 'Property' - Коэффициенты числителя заданы через Numerator свойство.

  • 'Input port' - Коэффициенты числителя заданы как вход в алгоритм объекта.

Задайте коэффициенты числителя конечная импульсная характеристика фильтра как коэффициенты полинома в z–1. Следующее уравнение задает системную функцию для фильтра длины N + 1:

H(z)=n=0Nb(n)zn

Вектор b = [b (0), b (1),..., b (N)] представляет вектор коэффициентов фильтра.

Чтобы действовать как эффективный антивизуальный фильтр, коэффициенты обычно соответствуют lowpass с нормализованной частотой среза не больше, чем обратная частота InterpolationFactor. Использовать designMultirateFIR для разработки такого фильтра. В более общем случае можно использовать любой сложный полосно-пропускающий фильтр. Для получения примера смотрите Double the Sample Rate Using конечной импульсной характеристики Interpolator.

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

Зависимости

Это свойство применяется при NumeratorSource установлено в 'Property'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64
Поддержка комплексного числа: Да

Свойства с фиксированной точкой

Флаг для использования правил полной точности для арифметики с фиксированной точкой, заданный как один из следующих:

  • true - Объект вычисляет всю внутреннюю арифметику и выходных данных с помощью правил полной точности. Эти правила обеспечивают наиболее точные числа с фиксированной точкой. В этом режиме другие свойства с фиксированной точкой не применяются. Квантование внутри объекта не происходит. Биты добавляются по мере необходимости, чтобы гарантировать отсутствие округления или переполнения.

  • false - Типы данных с фиксированной точкой управляются с помощью отдельных настроек свойств с фиксированной точкой.

Для получения дополнительной информации смотрите Полную точность для системных объектов с фиксированной точкой и Задать свойства системного объекта с фиксированной точкой.

Метод округления для операций с фиксированной точкой. Для получения дополнительной информации смотрите режим округления.

Зависимости

Это свойство не отображается и не влияет на числовые результаты при выполнении следующих условий:

  • FullPrecisionOverride установлено на true.

  • FullPrecisionOverride установлено на false, ProductDataType установлено на 'Full precision', AccumulatorDataType установлено на 'Full precision', и OutputDataType установлено на 'Same as accumulator'.

В этих условиях объект работает в режиме полной точности.

Действие переполнения для операций с фиксированной точкой, заданное как одно из следующего:

  • 'Wrap' - Объект переносит результат своих операций с фиксированной точкой.

  • 'Saturate' - Объект насыщает результат своих операций с фиксированной точкой.

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

Зависимости

Это свойство не отображается и не влияет на числовые результаты при выполнении следующих условий:

  • FullPrecisionOverride установлено на true.

  • FullPrecisionOverride установлено на false, OutputDataType установлено на 'Same as accumulator', ProductDataType установлено на 'Full precision', и AccumulatorDataType установлено на 'Full precision'

В этих условиях объект работает в режиме полной точности.

Тип данных коэффициентов конечной импульсной характеристики, заданный как:

  • Same word length as input - размер слова коэффициентов такая же, как и у входов. Длина фракции вычисляется, чтобы получить лучшую возможную точность.

  • Custom - Тип данных коэффициентов задается как пользовательский числовой тип через CustomCoefficientsDataType свойство.

Длина слова и дроби типа данных коэффициентов, заданная как автознаковая numerictype (Fixed-Point Designer) с размером слова 16 и долей 15.

Зависимости

Это свойство применяется, когда вы устанавливаете CoefficientsDataType свойство к Custom.

Тип данных продукта, выводимого в этом объекте, задается как один из следующих:

  • 'Full precision' - Тип выходных данных продукта имеет полную точность.

  • 'Same as input' -- Объект задает тот же тип выходных данных продукта, что и тип входных данных.

  • 'Custom' -- Тип выходных данных продукта задается как пользовательский числовой тип через CustomProductDataType свойство.

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

Зависимости

Это свойство применяется при установке FullPrecisionOverride на false.

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

Зависимости

Это свойство применяется только при установке FullPrecisionOverride на false и ProductDataType на 'Custom'.

Тип данных операции накопления в этом объекте, заданный как один из следующих:

  • 'Full precision' - Операция накопления имеет полную точность.

  • 'Same as product' -- Объект задает тип данных аккумулятора таким же, как тип выходных данных продукта.

  • 'Same as input' -- Объект задает тип данных аккумулятора таким же, как и тип входных данных.

  • 'Custom' -- Тип данных аккумулятора задается как пользовательский числовой тип через CustomAccumulatorDataType свойство.

Зависимости

Это свойство применяется при установке FullPrecisionOverride на false.

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

Зависимости

Это свойство применяется только при установке FullPrecisionOverride на false и AccumulatorDataType на 'Custom'.

Тип данных выхода объекта, заданный как один из следующих:

  • 'Same as accumulator' - Тип выходных данных аналогичен типу выходных данных аккумулятора.

  • 'Same as input' - Тип выходных данных аналогичен типу входных данных.

  • 'Same as product' - Тип выходных данных аналогичен типу выходных данных продукта.

  • 'Custom' -- Тип выходных данных задается как пользовательский числовой тип через CustomOutputDataType свойство.

Зависимости

Это свойство применяется при установке FullPrecisionOverride на false.

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

Зависимости

Это свойство применяется только при установке FullPrecisionOverride на false и OutputDataType на 'Custom'.

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

Описание

пример

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

y = firinterp(x,num) использует конечную импульсную характеристику фильтр, num, для интерполяции входного сигнала. Это строение действительно только тогда, когда 'NumeratorSource' для свойства задано значение 'Input port'.

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

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

Вход данных, заданный как вектор или матрица. Входная матрица P -by Q рассматривается как Q независимые каналы, и системный объект интерполирует каждый канал по первой размерности и генерирует выходную матрицу P*L -by Q, где L является коэффициентом интерполяции.

Этот объект поддерживает вход переменного размера и не поддерживает сложные беззнаковые входы с фиксированной точкой.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

Зависимости

Этот вход принимается только когда 'NumeratorSource' для свойства задано значение 'Input port'.

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

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

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

Вывод КИХ-интерполятора, возвращенный как вектор или матрица размера P*L -by- Q, где L является фактором интерполяции.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

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

release(obj)

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

freqzЧастотная характеристика фильтра в дискретном времени Системного объекта
fvtoolВизуализация частотной характеристики фильтров DSP
infoИнформация о фильтре Системный объект
costОценка стоимости реализации фильтра Системный объект
polyphaseПолифаза разложение многоскоростного фильтра
generatehdlСгенерируйте HDL-код для квантованного DSP-фильтра (требует Filter Design HDL Coder)
impzИмпульсная характеристика фильтра в дискретном времени Системного объекта
coeffsВозвращает фильтрация коэффициентов системного объекта в структуре
stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

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

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

В этом примере показано, как удвоить частоту дискретизации аудиосигнала с 22,05 кГц до 44,1 кГц и воспроизвести аудиосигнал.

afr = dsp.AudioFileReader('OutputDataType',...
   'single');
adw = audioDeviceWriter(44100);
L = 2;
num = designMultirateFIR(L,1);
firInterp = dsp.FIRInterpolator(L,num);
 
while ~isDone(afr)
     frame = afr();
     y = firInterp(frame);
     adw(y);
end

pause(1);
release(afr); 
release(adw);

Алгоритмы

Интерполяционный фильтр конечной импульсной характеристики реализован эффективно с помощью структуры полифазы.

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

H(z)=b0+b1z1+...+bNzN

N + 1 - длина конечной импульсной характеристики фильтра.

Можно переставить это уравнение следующим образом:

H(z)=(b0+bLzL+b2Lz2L+..+bNL+1z(NL+1))+z1(b1+bL+1zL+b2L+1z2L+..+bNL+2z(NL+1))+z(L1)(bL1+b2L1zL+b3L1z2L+..+bNz(NL+1))

L - количество полифазных компонентов, и его значение равняется заданному вами коэффициенту интерполяции.

Можно записать это уравнение как:

H(z)=E0(zL)+z1E1(zL)+...+z(L1)EL1(zL)

E0 (zL), E1 (zL),..., EL-1 (zL) являются полифазными компонентами конечной импульсной характеристики H (z).

Концептуально конечная импульсная характеристика интерполяционный фильтр содержит усилитель, за которым следует конечная импульсная характеристика lowpass фильтр H (z).

FIR interpolator contains an upsampler followed by an anti-imaging FIR filter.

Замените H (z) своим полифазным представлением.

Вот многорасовые благородные тождества для интерполяции.

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

Можно заменить оператор повышающей дискретизации, блок задержки и сумматор на коммутатор. Переключатель запускается на первой ветви 0 и перемещается в направлении против часовой стрелки, каждый раз получая по одной выборке от каждой ветви. Интерполятор эффективны выходы L выборки для каждого полученного входа выборки. Следовательно, скорость дискретизации на выходе конечной импульсной характеристики интерполяционного фильтра Lfs.

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

.

Преобразование с фиксированной точкой
Разрабатывайте и моделируйте системы с фиксированной точкой с помощью Fixed-Point Designer™.

Введенный в R2012a