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

EngeeDSP.SOSFilter

Реализация структуры БИХ-фильтра на основе секций второго порядка.

Библиотека

EngeeDSP

Описание

Чтобы реализовать структуру БИХ-фильтра с использованием секций второго порядка (SOS), выполните следующие действия:

  1. Создайте объект EngeeDSP.SOSFilter и установите его свойства.

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

Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.

Синтаксис

Создание

  • sos = EngeeDSP.SOSFilter() — возвращает объект биквадратного БИХ-фильтра sos, который независимо фильтрует каждый канал (столбец) входного сигнала по времени, используя заданную биквадратную структуру.

  • sos = EngeeDSP.SOSFilter(Name=Value) — возвращает объект биквадратного БИХ-фильтра sos с заданными свойствами в виде пары Name=Value, где Name — имя свойства, а Value — соответствующее значение. Можно указать несколько пар «имя-значение», порядок пар не имеет значения. Неуказанные свойства сохраняют свои значения по умолчанию.

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

  • y = sos(x) — фильтрует входной сигнал x и выводит отфильтрованные значения y. Объект фильтра sos фильтрует каждый канал (столбец) входного сигнала независимо при последовательных обращениях к алгоритму.

    Этот синтаксис можно использовать только в том случае, если для свойства CoefficientSource задано значение "Property".

  • y = sos(x,num,den) — фильтрует входной сигнал x, используя значения аргумента num в качестве коэффициентов числителя, а den — в качестве коэффициентов знаменателя фильтра.

    Этот синтаксис можно использовать только в том случае, если для свойства CoefficientSource задано значение "Input port", а для свойства HasScaleValues значение false.

  • y = sos(x,num,den,g) — также использует коэффициенты масштабирования g для фильтра секций второго порядка.

    Этот синтаксис можно использовать только в том случае, если для свойства CoefficientSource задано значение "Input port", а для свойства HasScaleValues значение true.

Аргументы

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

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

Details

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

Этот объект также принимает входной сигнал переменного размера. После запуска алгоритма системного объекта можно изменить размер каждого входного канала, но нельзя изменить количество каналов.

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

Тип данных всех входных аргументов должен быть одинаковым.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Fixed

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

Да

num — коэффициенты числителя
матрица P×3

Details

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

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

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

Тип данных всех входных аргументов должен быть одинаковым.

Размер и комплексность входных аргументов num и den должны быть одинаковыми.

Зависимости

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

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Fixed

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

Да

den — коэффициенты знаменателя
матрица P×3

Details

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

Ведущий коэффициент знаменателя всегда принимается равным 1. Если в первом столбце указано любое другое значение, объект игнорирует это значение и рассматривает его как 1.

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

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

Тип данных всех входных аргументов должен быть одинаковым.

Размер и комплексность входных аргументов num и den должны быть одинаковыми.

Зависимости

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

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Fixed

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

Да

g — коэффициенты масштабирования для каждой биквадратной секции второго порядка
вектор 1×(P+1)

Details

Коэффициенты масштабирования биквадратного фильтра, заданные в виде вектора на , где — количество секций биквадратного фильтра.

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

Тип данных всех входных аргументов должен быть одинаковым.

Зависимости

Чтобы использовать этот аргумент, установите для свойства CoefficientSource значение "Input port", а для свойства HasScaleValues значение true.

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Fixed

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

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

Details

Отфильтрованный выходной сигнал, возвращаемый в виде скаляра, вектора или матрицы. Размер и комплексность выходного сигнала такие же, как у входного сигнала.

Если входной сигнал представлен в формате фиксированной точки, тип данных выходного сигнала определяется на основе значения свойства OutputDataType. Если для свойства OutputDataType установлено значение "Full precision", тип выходных данных вычисляется на основе диаграмм потоков сигналов, приведенных в разделе Структуры фильтров с фиксированной точкой. Если для свойства OutputDataType установлено пользовательское значение, выходные данные приводятся к указанному числовому типу.

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

Типы данных

Float32, Float64, Int8, Int16, Int32, Int64, Fixed

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

Да

Свойства

# Structure — структура фильтра
"Direct form II transposed" (по умолчанию) | "Direct form I" | "Direct form I transposed" | "Direct form II"

Details

Структура фильтра, заданная как "Direct form I", "Direct form I transposed", "Direct form II" или "Direct form II transposed" (по умолчанию).

# CoefficientSource — источник коэффициентов фильтра
"Property" (по умолчанию) | "Input port"

Details

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

  • "Property" (по умолчанию) — коэффициенты фильтра задаются через свойства Numerator, Denominator и ScaleValues.

  • "Input port" — коэффициенты числителя, знаменателя и масштабные коэффициенты указываются в качестве входных аргументов объекта при выполнении алгоритма.

# Numerator — коэффициенты числителя фильтра
[0.0975 0.195 0.0975] (по умолчанию) | матрица P×3

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property".

# Denominator — коэффициенты знаменателя фильтра
[1 -0.9428 0.3333] (по умолчанию) | матрица P×3

Details

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

Ведущий коэффициент знаменателя всегда принимается равным 1. Если в первом столбце указано любое другое значение, объект игнорирует это значение и рассматривает его как 1.

После выполнения алгоритма размер этого свойства изменить нельзя. Однако значения знаменателя можно изменять, поскольку свойство является настраиваемым.

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property".

# HasScaleValues — укажите, имеет ли фильтр масштабный коэффициент для каждой секции
false (по умолчанию) | true

Details

Укажите, имеет ли фильтр масштабный коэффициент для каждой секции. Если установлено значение true, с помощью свойства ScaleValues можно задать масштабные коэффициенты, которые будут применяться до и после каждой секции биквадратного фильтра.

# ScaleValues — коэффициенты масштабирования для каждой секции биквадратного фильтра второго порядка
[1 1] (по умолчанию) | вектор

Details

Коэффициенты масштабирования для применения до и после каждой секции биквадратного фильтра, заданные в виде вектора. Длина вектора ScaleValues должна быть , где — количество секций биквадратного фильтра. Если задать для этого свойства скалярное значение, оно будет использоваться в качестве коэффициента усиления только перед первой секцией фильтра. Остальные значения коэффициента усиления устанавливаются на 1. Если задать для этого свойства вектор из значений, каждое значение будет использоваться для отдельной секции фильтра.

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property", а для свойства HasScaleValues значение true.

# RoundingMethod — метод округления
"Floor" (по умолчанию) | "Ceiling" | "Convergent" | "Nearest" | "Round" | "Simplest" | "Zero"

Details

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

  • "Floor" (по умолчанию);

  • "Ceiling";

  • "Convergent";

  • "Nearest";

  • "Round";

  • "Simplest";

  • "Zero".

# OverflowAction — выбор действия при переполнении
"Wrap" (по умолчанию) | "Saturate"

Details

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

  • "Wrap" (по умолчанию) — объект оборачивает результат своих операций с фиксированной точкой.

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

# SectionInputDataType — тип данных на входе секций фильтра
"Same as input" (по умолчанию)

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства HasScaleValues значение true.

# SectionOutputDataType — тип данных на выходе секций фильтра
"Same as section input" (по умолчанию)

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства HasScaleValues значение true.

# NumeratorDataType — тип данных коэффициентов числителя
"Same word length as input" (по умолчанию)

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property".

# DenominatorDataType — тип данных коэффициентов знаменателя
"Same word length as input" (по умолчанию)

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property".

# ScaleValuesDataType — тип данных коэффициентов масштабирования
"Same word length as input" (по умолчанию)

Details

Тип данных коэффициентов масштабирования, применяемый при работе с целочисленными типами и числами с фиксированной точкой.

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property", а для свойства HasScaleValues значение true.

# MultiplicandDataType — тип данных внутреннего промежуточного умножителя
"Same as output" (по умолчанию)

Details

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

Зависимости

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

# StateDataType — тип данных внутреннего состояния
"Full precision" (по умолчанию)

Details

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

Зависимости

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

# DenominatorAccumulatorDataType — тип данных аккумуляторов
"Same word length as input" (по умолчанию)

Details

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

Зависимости

Чтобы использовать это свойство, установите для свойства CoefficientSource значение "Property".

# OutputDataType — тип данных выходного сигнала
"Full precision" (по умолчанию)

Details

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

Методы

Общие для всех системных объектов

step!

Запустить алгоритм работы системного объекта

release!

Разрешить изменение значения свойства системного объекта

reset!

Сброс внутренних состояний системного объекта

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

Структуры фильтра

Details

На приведенных диаграммах показаны структуры фильтров, поддерживаемые секционным фильтром второго порядка.

Прямая форма I

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form I.

sosfilter 1

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

sosfilter 3

На рисунке приведена структура фильтра, если не заданы масштабные коэффициенты.

sosfilter 5

Прямая форма I транспонированная

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form I transposed.

sosfilter 7

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

sosfilter 3

На рисунке приведена структура фильтра, если не заданы масштабные коэффициенты.

sosfilter 5

Прямая форма II

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form II.

sosfilter 9

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

sosfilter 3

На рисунке приведена структура фильтра, если не заданы масштабные коэффициенты.

sosfilter 5

Прямая форма II транспонированная

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form II transposed.

sosfilter 11

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

sosfilter 3 На рисунке приведена структура фильтра, если не заданы масштабные коэффициенты.

sosfilter 5

Структуры фильтров с фиксированной точкой

Details

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

Прямая форма I

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

sosfilter 2

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

  • Когда данные не оптимизированы.

    sosfilter 4

  • Когда для масштабного коэффициента задано значение 1.

    sosfilter 6

Прямая форма I транспонированная

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form I transposed. На этой диаграмме показаны типы данных при вводе сигналов с фиксированной точкой. Если для свойства HasScaleValues задано значение false, пунктирные слепки отсутствуют. Операции усиления , , , и выполняются с полной точностью.

sosfilter 8

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

  • Когда данные не оптимизированы.

    sosfilter 4

  • Когда для масштабного коэффициента задано значение 1.

    sosfilter 6

Прямая форма II

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form II. На этой диаграмме показаны типы данных при вводе сигналов с фиксированной точкой. Если для свойства HasScaleValues задано значение false, то операция Cast отсутствует. Операции усиления , , , и выполняются с полной точностью.

sosfilter 10

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

  • Когда данные не оптимизированы.

    sosfilter 4

  • Когда для масштабного коэффициента задано значение 1.

    sosfilter 6

Прямая форма II транспонированная

На рисунке приведена диаграмма каждой секции в фильтре, если выбрана структура фильтра Direct form II transposed. На диаграмме показаны типы данных при вводе сигналов с фиксированной точкой. Операции усиления , , , и выполняются с полной точностью. Если для свойства HasScaleValues задано значение false, тип данных на выходе секции автоматически определяется алгоритмом объекта и не зависит от значения свойства SectionOutputDataType.

sosfilter 12

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

  • Когда данные не оптимизированы.

    sosfilter 4

  • Когда для масштабного коэффициента задано значение 1.

    sosfilter 6