Документация Engee

FIR Interpolation

Полифазная интерполяция с КИХ-фильтром.

Тип: FIRInterpolation

Путь в библиотеке:

/Signal Operations/Filters/MultirateFilters/FIR Interpolation

Описание

Блок FIR Interpolation выполняет эффективную полифазную интерполяцию с использованием целочисленного коэффициента интерполяции по первому измерению.

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

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

fir interpolation 1

Однако реальный алгоритм блока реализует полифазную структуру КИХ-фильтра прямой формы, эффективный эквивалент комбинированной системы, изображенной на диаграмме. Более подробная информация приведена в разделе Алгоритмы.

Блок FIR Interpolation можно использовать внутри триггерных подсистем, если для параметра Rate options установлено значение Enforce single-rate processing.

Порты

Выход

# OUT_1 — выходные данные после интерполяции
скаляр | вектор | матрица

Details

Выходные данные после интерполяции, возвращаемые в виде скаляра, вектора или матрицы.

Поведение блока зависит от значения параметра Rate options:

  • Enforce single-rate processing — при выборе этого значения блок сохраняет входную частоту дискретизации и интерполирует сигнал, увеличивая размер выходного кадра в раз.

  • Allow multirate processing — при выборе этого значения блок интерполирует сигнал таким образом, что выходная частота дискретизации в раз превышает входную частоту дискретизации.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Да

Вход

# IN_1 — входные данные
скаляр | вектор | матрица

Details

Входные данные для блока, заданные как вектор или матрица.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Да

# Num — коэффициенты числителя передаточной функции фильтра
вектор

Details

Порт ввода коэффициентов числителя КИХ-фильтра в виде вектора.

Передаточная функция КИХ-фильтра задается как

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

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

Зависимости

Чтобы использовать этот порт, установите для параметра Coefficient source значение Input port.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, UInt8, UInt16, UInt32, UInt64

Поддержка комплексных чисел

Да

Параметры

Основные

# Coefficient source — способ задания коэффициентов
Dialog parameters | Input port

Details

Если для параметра установлено значение Dialog parameters, то коэффициенты фильтра задаются в окне настроек параметров. Если для параметра установлено значение Input port, то коэффициенты фильтра задаются через входной порт Num.

Значения

Dialog parameters | Input port

Значение по умолчанию

Dialog parameters

Имя для программного использования

CoefficientSource

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

Нет

Вычисляемый

Нет

# FIR filter coefficients — коэффициенты низкочастотного КИХ-фильтра
String

Details

Укажите коэффициенты числителя передаточной функции КИХ-фильтра :

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

Блок инициализирует все состояния фильтра нулем.

Зависимости

Чтобы использовать этот параметр, установите для параметра Coefficient source значение Dialog parameters.

Значение по умолчанию

[0; -0.000129061486199961; -0.000228040316280948; 0; 0.000554613738572437; 0.000802607430267054; 0; -0.00152912350278902; -0.00203638780675590; 0; 0.00342230705979440; 0.00433928347039265; 0; -0.00673109372352446; -0.00825637814441869; 0; 0.0121125402586868; 0.0145130044012328; 0; -0.0204721583515830; -0.0241392529239787; 0; 0.0332125142618354; 0.0388230898504630; 0; -0.0529640018790903; -0.0619837024555044; 0; 0.0860610417481775; 0.102712774109103; 0; -0.154048515452570; -0.197567026018057; 0; 0.408837525145054; 0.824655115145336; 1; 0.824655115145336; 0.408837525145054; 0; -0.197567026018057; -0.154048515452570; 0; 0.102712774109103; 0.0860610417481775; 0; -0.0619837024555044; -0.0529640018790903; 0; 0.0388230898504630; 0.0332125142618354; 0; -0.0241392529239787; -0.0204721583515830; 0; 0.0145130044012328; 0.0121125402586868; 0; -0.00825637814441869; -0.00673109372352446; 0; 0.00433928347039265; 0.00342230705979440; 0; -0.00203638780675590; -0.00152912350278902; 0; 0.000802607430267054; 0.000554613738572437; 0; -0.000228040316280948; -0.000129061486199961]

Имя для программного использования

FilterCoefficients

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

Нет

Вычисляемый

Да

# Interpolation factor — коэффициент интерполяции
Real number

Details

Укажите целочисленный коэффициент . Блок увеличивает частоту дискретизации входной последовательности в соответствии с этим коэффициентом.

Значение по умолчанию

3

Имя для программного использования

InterpolationFactor

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

Нет

Вычисляемый

Да

# Input processing — тип обработки входного сигнала
Columns as channels (frame based) | Elements as channels (sample based)

Details

Укажите, выполняет ли блок обработку на основе отсчета или кадра. Варианты для выбора:

  • Elements as channels (sample based) — каждый элемент входного сигнала рассматривается как независимый канал (обработка на основе отсчета).

  • Columns as channels (frame based) — каждый столбец входного сигнала рассматривается как независимый канал (обработка на основе кадра).

Значения

Columns as channels (frame based) | Elements as channels (sample based)

Значение по умолчанию

Columns as channels (frame based)

Имя для программного использования

InputProcessing

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

Нет

Вычисляемый

Нет

# Rate options — метод, с помощью которого блок интерполирует входные данные
Allow multirate processing | Enforce single-rate processing

Details

Укажите метод, с помощью которого блок должен интерполировать входные данные. Варианты для выбора:

  • Enforce single-rate processing — при выборе этого метода блок сохраняет частоту дискретизации входного сигнала и интерполирует сигнал, увеличивая размер выходного кадра в раз. Чтобы выбрать этот метод, параметр Input processing должен иметь значение Columns as channels (frame based).

  • Allow multirate processing — при выборе этого метода блок интерполирует сигнал таким образом, что выходная частота дискретизации в раз превышает входную частоту дискретизации.

Значения

Allow multirate processing | Enforce single-rate processing

Значение по умолчанию

Enforce single-rate processing

Имя для программного использования

RateOptionsFrameBased

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

Нет

Вычисляемый

Нет

# Output buffer initial conditions — начальные условия

Details

Этот параметр появляется только в том случае, если блок настроен на многоскоростную обработку, то есть для параметра Rate options установлено значение Allow multirate processing, в этом случае в блоке происходит задержка передачи данных. Величина задержки при многоскоростной, многозадачной работе зависит от того, какое значение имеет параметр Input processing.

Input processing Задержка

Elements as channels (sample based)

выборок

Columns as channels (frame based)

кадров ( выборок на кадр)

Когда блок демонстрирует задержку, начальные условия по умолчанию равны нулю. В качестве альтернативы можно использовать параметр Output buffer initial conditions, чтобы указать матрицу начальных условий, содержащую по одному значению для каждого канала, или скалярное начальное условие, которое блок применяет ко всем каналам. Блок делит начальные условия Output buffer initial conditions на Interpolation factor и выводит масштабированные начальные условия до тех пор, пока не станет доступна первая отфильтрованная входная выборка.

Начальные условия хранятся в типе выходных данных и масштабировании.

Дополнительная информация о задержке в блоке FIR Interpolation приведена в разделе Время задержки.

Зависимости

Чтобы использовать этот параметр, установите для параметра Rate options значение Allow multirate processing.

Значение по умолчанию

0

Имя для программного использования

OutputBufferIC

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

Нет

Вычисляемый

Да

Дополнительно

Обработка на основе кадров

Details

Если для параметра Input processing установлено значение Columns as channels (frame based), то блок выполняет повторную выборку каждого столбца входного сигнала по времени. В этом режиме блок может выполнять как односкоростную, так и многоскоростную обработку. Можно использовать параметр Rate options, чтобы указать, как блок будет пересчитывать входные данные:

  • Если для параметра Rate options установлено значение Enforce single-rate processing, то входные и выходные данные блока имеют одинаковую частоту дискретизации. Для интерполяции выходных данных с сохранением частоты дискретизации входных данных блок пересчитывает данные в каждом столбце входных данных таким образом, чтобы размер кадра выходных данных был в раз больше, чем размер кадра входных данных: .

  • Если для параметра Rate options установлено значение Allow multirate processing, то входные и выходные данные интерполяции с КИХ-фильтром имеют одинаковый размер. Однако частота дискретизации выходных данных в раз выше, чем частота дискретизации входных данных. В этом режиме блок рассматривает входную матрицу на как независимых каналов. Блок интерполирует каждый столбец входного сигнала во времени, сохраняя размер кадра постоянным ( ), при этом период выходного кадра ( ) в раз короче периода входного кадра ( ).

Обработка на основе выборки

Details

Если для параметра Input processing установлено значение Elements as channels (sample based), то блок рассматривает входную матрицу на как независимых каналов и интерполирует каждый канал по времени. Период выборки на выходе в раз короче периода выборки на входе: , при этом размеры входных и выходных данных остаются идентичными.

Время задержки

Details

Если для параметра Input processing установлено значение Columns as channels (frame based), а для параметра Rate optionsEnforce single-rate processing, то блок FIR Interpolation всегда имеет нулевую задержку. Нулевая задержка означает, что блок передает первую отфильтрованную входную выборку, полученную в момент времени , в качестве первой выходной выборки. Затем за первой выходной выборкой следует интерполированных значений, вторая отфильтрованная входная выборка и так далее.

Единственный раз, когда блок FIR Interpolation демонстрирует задержку, это если для параметра Rate options установлено значение Allow multirate processing. Величина задержки при многоскоростной, многозадачной работе зависит от того, какое значение имеет параметр Input processing.

Input processing Задержка

Elements as channels (sample based)

выборок

Columns as channels (frame based)

кадров ( выборок на кадр)

Когда блок демонстрирует задержку, начальные условия по умолчанию равны нулю. В качестве альтернативы можно использовать параметр Output buffer initial conditions, чтобы указать матрицу начальных условий, содержащую по одному значению для каждого канала, или скалярное начальное условие, которое блок применяет ко всем каналам. Блок делит начальные условия Output buffer initial conditions на Interpolation factor и выводит масштабированные начальные условия до тех пор, пока не станет доступна первая отфильтрованная входная выборка.

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

Когда блок находится в режиме обработки на основе кадра и использует начальное значение по умолчанию равное нулю, первые выходных строк содержат нули, где — размер входного кадра. Первая отфильтрованная входная выборка (первая отфильтрованная строка входной матрицы) появляется на выходе как выборка. Затем следует интерполированных значений, вторая отфильтрованная входная выборка и так далее.

Алгоритмы

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

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

где — это длина КИХ-фильтра.

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

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

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

где — полифазные компоненты КИХ-фильтра .

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

fir interpolation 1

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

fir interpolation 3

Здесь представлено тождество для многомерной интерполяции.

fir interpolation 4

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

fir interpolation 5

Можно заменить оператор вставки нулевых выборок, блок задержки и сумматор коммутационным переключателем. Переключатель начинается с первой ветви 0 и движется против часовой стрелки, каждый раз получая по одной выборке из каждой ветви. Интерполятор эффективно выдает выборок на каждую полученную входную выборку. Таким образом, частота дискретизации на выходе интерполяции с КИХ-фильтром составляет .

fir interpolation 6

Литература

  1. Fliege, N. J. Multirate Digital Signal Processing: Multirate Systems, Filter Banks, Wavelets. West Sussex, England: John Wiley & Sons, 1994.

  2. Orfanidis, Sophocles J. Introduction to Signal Processing. Upper Saddle River, NJ: Prentice-Hall, 1996.