exponenta event banner

dsp. FIRInterpolator

Многофазный FIR-интерполятор

Описание

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

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

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

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

Для увеличения числа входных данных:

  1. Создать dsp.FIRInterpolator и задайте его свойства.

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

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

При определенных условиях этот объект System также поддерживает создание кода SIMD. Дополнительные сведения см. в разделе Создание кода.

Создание

Описание

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

пример

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

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

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

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

Источник коэффициента КИХ-фильтра, указанный как:

  • 'Property' - Числительные коэффициенты определяются через Numerator собственность.

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

В качестве коэффициентов многочлена в z-1 укажите числительные коэффициенты КИО-антиизображающего фильтра. Следующее уравнение определяет системную функцию для фильтра длиной N + 1:

H (z) =∑n=0Nb (n) z − n

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

Для того чтобы действовать как эффективный антиизображающий фильтр, коэффициенты обычно соответствуют фильтру нижних частот с нормированной частотой отсечки, не превышающей обратную InterpolationFactor. Использовать designMultirateFIR создание такого фильтра. В более общем случае может быть использован любой сложный полосовой фильтр. Пример см. в разделе Удвоение частоты выборки с помощью FIR-интерполятора.

Коэффициенты фильтра масштабируются на величину 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'

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

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

  • 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) использует фильтр FIR, num, для интерполяции входного сигнала. Эта конфигурация действительна только в том случае, если 'NumeratorSource' свойство имеет значение 'Input port'.

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

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

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

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

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

Коэффициенты КИХ-фильтра, заданные как вектор строки.

Зависимости

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

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

Примечание: 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);

Алгоритмы

FIR-интерполяционный фильтр эффективно реализуется с использованием полифазной структуры.

Для получения полифазной структуры начните с передаточной функции фильтра FIR:

H (z) = b0 + b1z 1 +... + bNz − N

N + 1 - длина фильтра FIR.

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

H (z) = (b0+bLz−L+b2Lz−2L +. +bN−L+1z− (N−L+1)) +z−1 (b1+bL+1z−L+b2L+1z−2L +. +bN−L+2z− (N−L+1)) + ⋮z− (L−1) (bL−1+b2L−1z−L+b3L−1z−2L +. +bNz− (N−L+1))

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

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

H (z) = E0 (zL) + z 1E1 (zL) +... + z (L − 1) EL − 1 (zL)

E0 (zL), E1 (zL),..., EL-1 (zL) - полифазные компоненты КИХ-фильтра Н (z).

Концептуально фильтр интерполяции КИХ содержит повышающую дискретизацию, за которой следует фильтр нижних частот КИХ Н (z).

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

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

Вот многоскоростная благородная идентичность для интерполяции.

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

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

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

.

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

Представлен в R2012a