FIR Interpolation
Полифазная интерполяция с КИХ-фильтром.
Описание
Блок FIR Interpolation выполняет эффективную полифазную интерполяцию с использованием целочисленного коэффициента интерполяции по первому измерению.
Концептуально интерполяция с фильтром с конечной импульсной характеристикой (КИХ-фильтр, FIR) представляет повышение частоты в раз с последующим применением реконструкционного КИХ-фильтра, который обычно является аппроксимацией идеального интерполяционного фильтра с ограниченной полосой частот.
Повышение частоты дискретизации каждого канала входного сигнала до более высокой, выполняется путем добавления нулей между выборками. Следом КИХ-фильтр фильтрует каждый канал преобразованных данных. Результирующий дискретный сигнал имеет частоту дискретизации в раз превышающую исходную частоту дискретизации.
Однако реальный алгоритм блока реализует полифазную структуру КИХ-фильтра прямой формы, эффективный эквивалент комбинированной системы, изображенной на диаграмме. Более подробная информация приведена в разделе Алгоритмы.
Блок FIR Interpolation можно использовать внутри триггерных подсистем, если для параметра Rate options установлено значение Enforce single-rate processing
.
Порты
Вход
In — входные данные
скаляр
| вектор
| матрица
Входные данные для блока, заданные в виде вектора или матрицы.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
Поддержка комплексных чисел: Да
Num — коэффициенты числителя передаточной функции фильтра
вектор
Порт ввода коэффициентов числителя КИХ-фильтра в виде вектора.
Передаточная функция КИХ-фильтра задается как:
Для работы в качестве эффективного реконструкционного фильтра коэффициенты обычно соответствуют фильтру низких частот со значением нормированной частоты среза не больше, чем значение обратной величины коэффициента интерполяции.
Значения коэффициентов являются настраиваемыми. То есть, их значения могут меняться в процессе моделирования, в то время как их свойства, такие как размер, тип данных и комплексность, остаются неизменными.
Зависимости
Чтобы использовать этот порт, установите для параметра Coefficient source значение Input port
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
Поддержка комплексных чисел: Да
Выход
Out — выходные данные после интерполяции
скаляр
| вектор
| матрица
Выходные данные после интерполяции, возвращаемые в виде скаляра, вектора или матрицы.
Поведение блока зависит от значения параметра Rate options:
-
Enforce single-rate processing
— при выборе этого значения блок сохраняет входную частоту дискретизации и интерполирует сигнал, увеличивая размер выходного кадра в раз. -
Allow multirate processing
— при выборе этого значения блок интерполирует сигнал таким образом, что выходная частота дискретизации в раз превышает входную частоту дискретизации.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
Поддержка комплексных чисел: Да
Параметры
Coefficient source — способ задания коэффициентов
Dialog parameters (по умолчанию)
| Input port
Если параметр имеет значение Dialog parameters
, то коэффициенты фильтра задаются в окне настроек параметров. Если параметр имеет значение Input port
, то коэффициенты фильтра задаются через входной порт Num.
FIR filter coefficients — коэффициенты низкочастотного КИХ-фильтра
[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] (по умолчанию)
| вектор
Укажите коэффициенты числителя передаточной функции КИХ-фильтра :
Для работы в качестве эффективного реконструкционного фильтра коэффициенты обычно подбираются так, чтобы соответствовать фильтру низких частот со значением нормированной частоты среза не больше, чем значение обратной величины коэффициента интерполяции.
Блок инициализирует все состояния фильтра нулем.
Зависимости
Чтобы использовать этот параметр, установите для параметра Coefficient source значение Dialog parameters
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, UInt8
, UInt16
, UInt32
, UInt64
Поддержка комплексных чисел: Да
Interpolation factor — коэффициент интерполяции
3 (по умолчанию)
| положительный скаляр
Укажите целочисленный коэффициент . Блок увеличивает частоту дискретизации входной последовательности в соответствии с этим коэффициентом.
Типы данных: Int8
, Int16
, Int32
, Int64
Input processing — тип обработки входного сигнала
Columns as channels (frame based)
| Elements as channels (sample based)
Укажите, выполняет ли блок обработку на основе выборки или кадра. Варианты для выбора:
-
Elements as channels (sample based)
— каждый элемент входного сигнала рассматривается как независимый канал (обработка на основе выборки). -
Columns as channels (frame based)
— каждый столбец входного сигнала рассматривается как независимый канал (обработка на основе кадра).
Rate options — метод, с помощью которого блок интерполирует входные данные
Enforce single-rate processing (по умолчанию)
| Allow multirate processing
Укажите метод, с помощью которого блок должен интерполировать входные данные. Варианты для выбора:
-
Enforce single-rate processing
— при выборе этого метода блок сохраняет частоту дискретизации входного сигнала и интерполирует сигнал, увеличивая размер выходного кадра в раз. Чтобы выбрать этот метод, параметр Input processing должен иметь значениеColumns as channels (frame based)
. -
Allow multirate processing
— при выборе этого метода блок интерполирует сигнал таким образом, что выходная частота дискретизации в раз превышает входную частоту дискретизации.
Подробнее
Обработка на основе кадров
Если для параметра Input processing установлено значение Columns as channels (frame based)
, то блок выполняет повторную выборку каждого столбца входного сигнала по времени. В этом режиме блок может выполнять как односкоростную, так и многоскоростную обработку. Можно использовать параметр Rate options, чтобы указать, как блок будет пересчитывать входные данные:
-
Если для параметра Rate options установлено значение
Enforce single-rate processing
, то входные и выходные данные блока имеют одинаковую частоту дискретизации. Для интерполяции выходных данных с сохранением частоты дискретизации входных данных блок пересчитывает данные в каждом столбце входных данных таким образом, чтобы размер кадра выходных данных ( ) был в раз больше, чем размер кадра входных данных ( ). -
Если для параметра Rate options установлено значение
Allow multirate processing
, то входные и выходные данные интерполяции с КИХ-фильтром имеют одинаковый размер. Однако частота дискретизации выходных данных в раз выше, чем частота дискретизации входных данных. В этом режиме блок рассматривает входную матрицу на как независимых каналов. Блок интерполирует каждый столбец входного сигнала во времени, сохраняя размер кадра постоянным ( = ), при этом период выходного кадра ( ) в раз короче периода входного кадра ( ).
Обработка на основе выборки
Если для параметра Input processing установлено значение Elements as channels (sample based)
, то блок рассматривает входную матрицу на как независимых каналов и интерполирует каждый канал по времени. Период выборки на выходе ( ) в раз короче периода выборки на входе ( ), при этом размеры входных и выходных данных остаются идентичными.
Алгоритмы
Интерполяция с КИХ-фильтром эффективно реализуется с помощью полифазной структуры.
Чтобы вывести полифазную структуру, начнем с определения передаточной функции КИХ-фильтра:
где — это длина КИХ-фильтра.
Можно перестроить это уравнение следующим образом:
где — это количество полифазных компонентов, и его значение равно коэффициенту интерполяции, который задается в окне настроек параметров.
Можно записать это уравнение в виде:
где , , …, — это полифазные компоненты КИХ-фильтра .
Концептуально, интерполяция с КИХ-фильтром состоит из коэффициента интерполяции за которым следует КИХ-фильтр низких частот .
Заменим его полифазным представлением.
Здесь представлено тождество для многомерной интерполяции.
Применение тождества для интерполяции перемещает операцию вставки нулевых выборок после операции фильтрации. Этот ход позволяет фильтровать сигнал с меньшей скоростью.
Можно заменить оператор вставки нулевых выборок, блок задержки и сумматор коммутационным переключателем. Переключатель начинается с первой ветви 0 и движется против часовой стрелки, каждый раз получая по одной выборке из каждой ветви. Интерполятор эффективно выдает выборок на каждую полученную входную выборку. Таким образом, частота дискретизации на выходе интерполяции с КИХ-фильтром составляет .