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

Discrete Filter

Модель фильтра с бесконечной импульсной характеристикой (БИХ).

Тип: DiscreteFilter

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

/Basic/Discrete/Discrete Filter

Описание

Блок Discrete Filter независимо фильтрует каждый канал входного сигнала с заданным цифровым БИХ-фильтром. Вы можете указать структуру фильтра как Direct form I, Direct form I transposed, Direct form II или Direct form II transposed.

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

Параметр Input processing позволяет указать, как блок обрабатывает каждый элемент ввода. Вы можете указать, обрабатывать входные элементы как независимый канал (Elements as channels (sample based)) или обрабатывать каждый столбец ввода как независимый канал (Columns as channels (frame based)). В режиме frame-based выходные размерности равны входным размерностям, за исключением случаев, когда вы задаете матрицу в качестве параметра Numerator coefficients. В режиме sample-based применяется механизм core-modeling/vectorization-broadcast-modeling.adoc#broadcast.

Параметр Numerator coefficients задает коэффициенты полинома числителя фильтра. Параметр Denominator coefficients задает коэффициенты полинома знаменателя функции.

Коэффициенты полиномов числителя и знаменателя задаются в порядке возрастания степеней . Блок Discrete Filter позволяет использовать полиномы в (оператор задержки), чтобы представить дискретную систему. Такой подход, как правило, используется в цифровой обработке сигналов (ЦОС). Напротив, блок Discrete Transfer Fcn позволяет использовать полиномы от для представления дискретной системы. Такой подход чаще встречается в системах управления. Когда полиномы числителя и знаменателя имеют одинаковую длину, оба эти подхода эквивалентны.

Начальные состояния

  • Если начальное значение — скаляр, то для каждого канала для каждой задержки используется это начальное значение.

  • Если начальное значение — массив, то используется расширение размерности.

    Рассмотрим пример. Пусть начальное значение это [s1, s2, s3]. В таком случае это вектор-столбец, так что его для наглядности можно записать так:

    [
    s1,
    s2,
    s3,
    ]

    Допустим, канал у нас один. Тогда s1 — это начальное условие для первой задержки, s2 — для второй и т.д. Если каналов несколько, то все это верно для каждого отдельно взятого канала.

    Второй пример — [s1 s2 s3]. Это матрица-строка. Если у фильтра три задержки, то после расширения размерности начальные условия имеют вид:

    [
    s1 s2 s3;
    s1 s2 s3;
    s1 s2 s3;
    ]

    В данном случае начальные условия для задержек первого канала — это [s1, s1, s1], для второго — [s2, s2, s2] и т.д.

    Возможна ситуация, когда число размерностей больше. Общее правило: первая размерность соответствует начальным условиям для разных задержек, следующие размерности — разным каналам. Каналы при этом могут быть элементами не только вектора, но и матрицы, и массивов более высоких размерностей.

Число задержек определяется так, как написано выше. Для Direct form I и Direct form I transposed число задержек для числителя равняется длине числителя минус 1, для знаменателя — длине знаменателя минус 1. Для Direct form II и Direct form II transposed максимуму из длин знаменателя и числителя минус 1.

Параметр Initial states задает начальные состояния для задержек фильтра.

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

Начальное состояние Примеры Описание

Скаляр

5

Каждый элемент задержки для каждого канала установлен на 5.

Блок инициализирует все элементы задержки в фильтре скалярным значением

Вектор или матрица (для применения различных элементов задержки к каждому каналу)

Для трехканального входного сигнала и фильтра с двумя элементами задержки:

] или

Элементами задержки для канала 1 являются и .

Элементами задержки для канала 2 являются и .

Элементами задержки для канала 3 являются и .

Каждый элемент вектора или матрицы задает уникальное начальное условие для соответствующего элемента задержки в соответствующем канале:

  • Длина вектора должна быть равна произведению количества входных каналов и количества элементов задержки в фильтре.

  • Матрица должна иметь такое же количество строк, как и количество элементов задержки в фильтре, и должна иметь по одному столбцу для каждого канала входного сигнала.

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

Количество элементов задержки (состояния фильтра)
Структура фильтра Количество элементов задержки на канал

Direct form I

Direct form I transposed

  • number of zeros — 1

  • number of poles — 1

Direct form II

Direct form II transposed

max(number of zeros, number of poles) — 1

В следующих таблицах описываются допустимые начальные состояния для различных размеров входных данных и различного количества каналов в зависимости от значения параметра Input processing — обработка на основе кадра Columns as channels (frame based) или обработка на основе отсчетов Elements as channels (sample based).

Обработка на основе кадра
Вход Количество каналов Допустимые начальные состояния (диалоговое окно) Допустимые начальные состояния (входной порт)

Вектор-столбец ( на 1)

Неориентированный вектор ( )

1

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Матрица ( на )

N

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Матрица ( на )

Скаляр

Матрица ( на )

Обработка на основе отсчетов
Вход Количество каналов Допустимые начальные состояния (диалоговое окно) Допустимые начальные состояния (входной порт)

Скаляр

1

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Вектор-строка (1 на )

Вектор-столбец ( на 1)

Неориентированный вектор ( )

N

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Матрица ( на )

Скаляр

Матрица ( на )

Скаляр

Вектор-столбец ( на 1)

Вектор-строка (1 на )

Матрица ( на )

Скаляр

Порты

Выход

# OUT_1 — отфильтрованный сигнал
скаляр | вектор | матрица | многомерный массив

Details

Отфильтрованный выходной сигнал.

Типы данных

Float64

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

Нет

Вход

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

Details

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

Типы данных

Float64

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

Нет

# external reset — внешний сигнал сброса блока
скаляр

Details

Внешний сигнал, который сбрасывает состояние блока в начальные условия.

Зависимости

Чтобы использовать этот порт, установите для параметра External reset любое значение, кроме None.

Типы данных

Float64

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

Нет

# Den — коэффициенты знаменателя
скаляр | вектор | матрица

Details

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

Зависимости

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

Если вы указываете коэффициенты знаменателя из входного порта Den, то необходимо установить флажок Optimize by skipping divide by leading denominator coefficient (a0). При установке этого флажка блок игнорирует ведущий коэффициент знаменателя и заменяет его на 1.

Типы данных

Float64

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

Нет

# Num — коэффициенты числителя
скаляр | вектор | матрица

Details

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

Зависимости

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

Типы данных

Float64

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

Нет

# x0 — начальные состояния фильтра
скаляр | вектор | матрица

Details

Начальные состояния фильтра в виде скаляра, вектора или матрицы.

Зависимости

Чтобы использовать этот порт, установите для параметра Filter Structure значение Direct form II или Direct form II transposed, а для параметра Initial states source значение Input port.

Типы данных

Float64

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

Нет

Параметры

Основные

# Filter Structure — структура фильтра
Direct form I | Direct form I transposed | Direct form II | Direct form II transposed

Details

Задает дискретную структуру IIR-фильтра.

Значения

Direct form I | Direct form I transposed | Direct form II | Direct form II transposed

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

Direct form II

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

FilterStructure

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

Нет

Вычисляемый

Нет

# Numerator source — источник коэффициентов числителя
Dialog | Input port

Details

Укажите источник коэффициентов числителя:

  • Dialog — коэффициенты числителя задаются в параметре Numerator coefficients;

  • Input port — коэффициенты числителя поступают на порт Num.

Значения

Dialog | Input port

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

Dialog

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

NumeratorSource

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

Нет

Вычисляемый

Нет

# Numerator coefficients — коэффициенты числителя
Scalar / array of real numbers

Details

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

Зависимости

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

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

[1.0]

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

Numerator

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

Да

Вычисляемый

Да

# Denominator source — источник коэффициентов знаменателя
Dialog | Input port

Details

Укажите источник коэффициентов знаменателя:

  • Dialog — коэффициенты знаменателя задаются в параметре Denominator coefficients;

  • Input port — коэффициенты знаменателя поступают на порт Den.

Если вы указываете коэффициенты знаменателя из входного порта Den, то необходимо установить флажок Optimize by skipping divide by leading denominator coefficient (a0).

Значения

Dialog | Input port

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

Dialog

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

DenominatorSource

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

Нет

Вычисляемый

Нет

# Denominator coefficients — коэффициенты знаменателя
Scalar / array of real numbers

Details

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

Если установлен флажок Optimize by skipping divide by leading denominator coefficient (a0), то возникает ошибка, если в параметре Denominator coefficients указаны коэффициенты знаменателя, а .

Зависимости

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

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

[1.0, 0.5]

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

Denominator

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

Да

Вычисляемый

Да

# Initial states source — источник начальных состояний
Dialog | Input port

Details

Укажите источник начальных состояний:

  • Dialog — начальные состояния задаются в параметре Initial states;

  • Input port — начальные состояния поступают на порт x0.

Зависимости

Чтобы использовать этот параметр, установите для параметра Filter Structure значение Direct form II или Direct form II transposed.

Значения

Dialog | Input port

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

Dialog

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

InitialStatesSource

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

Нет

Вычисляемый

Нет

# Initial states — начальные состояния фильтра
Scalar / array of real numbers

Details

Начальные состояния фильтра в виде скаляра, вектора или матрицы.

Зависимости

Чтобы использовать этот параметр, установите для параметра Filter Structure значение Direct form II или Direct form II transposed, а для параметра Initial states source значение Dialog.

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

0.0

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

InitialStates

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

Да

Вычисляемый

Да

# Initial states on numerator side — начальные состояния числителя
Scalar / array of real numbers

Details

Укажите начальные состояния числителя фильтра в виде скаляра, вектора или матрицы.

Зависимости

Чтобы использовать этот параметр, установите для параметра Filter Structure значение Direct form I или Direct form I transposed.

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

0.0

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

InitialStatesNumSide

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

Да

Вычисляемый

Да

# Initial states on denominator side — начальные состояния знаменателя
Scalar / array of real numbers

Details

Начальные состояния знаменателя фильтра в виде скаляра, вектора или матрицы.

Зависимости

Чтобы использовать этот параметр, установите для параметра Filter Structure значение Direct form I или Direct form I transposed.

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

0.0

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

InitialDenominatorStates

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

Да

Вычисляемый

Да

# External reset — сброс внешнего состояния
None | Rising | Falling | Either | Level | Level hold

Details

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

  • None — нет сброса.

  • Rising — сброс по нарастающему фронту.

  • Falling — сброс по понижающему фронту.

  • Either — сброс по нарастающему или понижающему фронту.

  • Level — сброс в любом из этих случаев:

    • Когда сигнал сброса отличен от нуля на текущем временном шаге.

    • Когда значение сигнала сброса изменяется от ненулевого на предыдущем временном шаге до нуля на текущем временном шаге.

  • Level hold — сброс, когда сигнал сброса отличен от нуля на текущем временном шаге.

Значения

None | Rising | Falling | Either | Level | Level hold

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

None

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

ExternalReset

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

Нет

Вычисляемый

Нет

# 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)

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

Elements as channels (sample based)

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

InputProcessing

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

Нет

Вычисляемый

Нет

# Optimize by skipping divide by leading denominator coefficient (a0) — пропустить деление на a0
Logical

Details

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

Если вы указываете коэффициенты знаменателя из входного порта Den, то необходимо установить флажок Optimize by skipping divide by leading denominator coefficient (a0). При установке этого флажка блок игнорирует ведущий коэффициент знаменателя и заменяет его на 1.

Если снять этот флажок, то блок будет полностью настраиваться во время моделирования. Он будет делить на при симуляции.

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

false (выключено)

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

a0EqualsOne

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

Нет

Вычисляемый

Нет

# Sample time — интервал между шагами расчета
SampleTime (real number / vector of two real numbers)

Details

Укажите интервал между шагами расчета как неотрицательное число. Чтобы наследовать шаг расчета, установите для этого параметра значение -1.

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

-1

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

SampleTime

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

Нет

Вычисляемый

Да