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

Деление

Выполняет умножение и деление скаляров и нескаляров.

Divide

divide

Product

product

Product of Elements

product of elements

Описание

Блок Деление выводит результат умножения или деления входных сигналов.

Значок блока, выполняемая операция и количество портов меняются в зависимости от значения параметров Умножение и Количество входных сигналов.

В этой таблице показаны выходные данные блока Деление для примерных входных данных с использованием значений параметров блока:

  • Умножение: Поэлементное(.*)

  • Количество входных сигналов: */

Входные данные Поведение блока

скаляр ÷ скаляр

Выводит результат деления первого входного скаляра на второй.

скаляр ÷ нескаляр

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

нескаляр ÷ нескаляр

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

Блок Деление может:

  • Численно умножать и делить любое количество скалярных, векторных или матричных входных данных.

  • Выполнять матричное умножение и деление на любом количестве матричных входных данных.

Блок Деление выполняет поэлементное или матричное умножение или деление, в зависимости от значения параметра Умножение. Блок принимает один или несколько потоков входных данных, в зависимости от параметра Количество входных сигналов. Параметр Количество входных сигналов также определяет операцию, которую необходимо выполнить для каждого входа.

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

Блок Деление имеет два режима:

  • Поэлементное(.*) — обрабатывает нескалярные входные данные поэлементно.

  • Матричное(*) — обрабатывает нескалярные входные данные в виде матриц.

Поэлементный режим

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

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

Когда блок Деление находится в режиме Поэлементное(.*) и имеет только один вход, он работает так, как описано в разделе Алгоритмы.

Чтобы вычислить выходные данные, блок сначала расширяет все входы до единого размера (используя стандартный broadcast), а затем выполняет поэлементные действия.

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

Значения параметра Пример

Количество входных сигналов: 2

divide 1

Количество входных сигналов: */

divide 2

Количество входных сигналов: /**/

divide 3

Количество входных сигналов: **

divide 4

Количество входных сигналов: */*

divide 5

Матричный режим

Когда значение параметра Умножение равно Матричное(*), блок Деление обрабатывает нескалярные входные данные в виде матриц. В этом режиме блок Деление может инвертировать одну квадратную матрицу или умножать и делить любое количество матриц, размеры которых определены математически.

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

Взаимодействия между входами блока и режимами

Взаимодействия между входными данными блока Деление и его режимами Умножение:

  • В параметре Количество входных сигналов заданы значения 1, * или /.

    Блок имеет один входной порт. В режиме Поэлементное(.*) блок обрабатывает входные данные, как описано в разделе Алгоритмы. В режиме Матричное(*), если значение параметра равно 1 или *, то блок выводит входное значение. Если значение равно /, входные данные должны быть квадратной матрицей (включая скаляр в качестве вырожденного случая), и блок выводит обратную матрицу. Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим.

  • В параметре Количество входных сигналов задано целое значение > 1

    Блок имеет количество входных данных, заданное целочисленным значением. Входные данные умножаются вместе в режиме Поэлементное(.*) или в режиме Матричное(*), как указано параметром Умножение. Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим.

  • В параметре Количество входных сигналов задана строка без кавычек, состоящая из двух или более символов * и /

    Блок имеет количество входных данных, заданное длиной символьного вектора. Каждый входной сигнал, соответствующий символу *, умножается на выходной сигнал. Каждый выходной сигнал, соответствующий символу /, делится на входной. Операции выполняются в режиме Поэлементное(.*) или в режиме Матричное(*), как указано параметром Умножение. Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим.

Порты

Выход

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

Details

Выходной сигнал, вычисляемый путем умножения или деления входных сигналов.

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Bool, Fixed

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

Да

Вход

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

Details

Входной сигнал для умножения на другие входные сигналы.

Зависимости

Чтобы использовать один или несколько портов x, укажите один или несколько символов * для параметра Количество входных сигналов и установите для параметра Умножение значение Поэлементное(.*).

Чтобы использовать один или несколько портов *, укажите один или несколько символов * для параметра Количество входных сигналов и установите для параметра Умножение значение Матричное(*).

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Fixed, Bool

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

Да

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

Details

Входной сигнал для операций деления или инверсии.

Зависимости

Чтобы использовать один или несколько портов ÷, укажите один или несколько символов / для параметра Количество входных сигналов и установите для параметра Умножение значение Поэлементное(.*).

Чтобы использовать один или несколько портов Inv, укажите один или несколько символов / для параметра Количество входных сигналов и установите для параметра Умножение значение Матричное(*).

Типы данных

Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Fixed, Bool

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

Да

Параметры

Основные

# Количество входных сигналов — количество и названия входных портов и тип операции

Details

Операции, выполняемые блоком: умножение или деление.

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

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

Inputs

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

Нет

Вычисляемый

Да

# Умножение — тип умножения
Поэлементное(.) | Матричное()

Details

Укажите, в каком режиме блок выполняет умножение или деление Поэлементное(.*) или Матричное(*).

Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим.

Значения

Element-wise(.) | Matrix()

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

Element-wise(.*)

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

Multiplication

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

Нет

Вычисляемый

Нет

Настройки выхода

# Тип данных выхода — тип выходных данных
Наследовать автоматически | Наследовать от первого входа | Float64 | Float32 | Float16 | Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64 | Int128 | UInt128 | Фиксированная точка

Details

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

Значения

Inherit: auto | Same as first input | Float64 | Float32 | Float16 | Int8 | UInt8 | Int16 | UInt16 | Int32 | UInt32 | Int64 | UInt64 | Int128 | UInt128 | Fixed-point

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

Inherit: auto

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

OutDataTypeStr

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

Нет

Вычисляемый

Нет

# Выходной тип с фиксированной точкой — тип выходных данных с фиксированной точкой
Тип данных

Details

Укажите тип выходных данных с фиксированной точкой.

Зависимости

Чтобы использовать этот параметр, установите для параметра Тип данных выхода значение Фиксированная точка.

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

fixdt(1, 16, 0)

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

OutDataTypeStrFixed

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

Нет

Вычисляемый

Да

Основные

# Метод округления до целого — режим округления для операций с фиксированной точкой
К большему | Конвергентный | К меньшему | К ближайшему | Математическое | К нулю

Details

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

  • К меньшему — округляет как положительные, так и отрицательные числа в меньшую сторону (в сторону отрицательной бесконечности).

  • К большему — округляет как положительные, так и отрицательные числа в большую сторону (в сторону положительной бесконечности).

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

  • К ближайшему — округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, число округляется в большую сторону (в сторону положительной бесконечности).

  • Математическое — округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, положительные числа округляются в большую сторону (в сторону положительной бесконечности), а отрицательные – в меньшую (в сторону отрицательной бесконечности).

  • К нулю — округляет число в сторону нуля.

Значения

Ceiling | Convergent | Floor | Nearest | Round | Zero

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

Floor

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

RndMeth

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

Нет

Вычисляемый

Нет

# Ограничить при переполнении целого — метод действия при переполнении
Логический тип

Details

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

Действие Причины для принятия этого решения Что происходит при переполнении Пример

Установите этот флажок.

В вашей модели возможно переполнение, и вам нужна явная защита от насыщения в генерируемом коде.

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

Переполнение, связанное со знаковым 8-битным целым числом, может насытиться до -128 или 127.

Не устанавливайте этот флажок.

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

Переполнения оборачиваются в соответствующее значение, которое может быть представлено типом данных.

Число 130 не помещается в знаковое 8-битное целое число и сворачивается в -126

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

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

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

SaturateOnIntegerOverflow

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

Нет

Вычисляемый

Нет

# Тип данных для всех входных портов должен быть одинаковым — режим одинакового типа данных для всех входов
Логический тип

Details

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

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

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

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

InputSameDT

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

Нет

Вычисляемый

Нет

Алгоритмы

Блок Деление с одним входом в режиме Поэлементное(.*) использует представленные ниже алгоритмы для выполнения поэлементных операций над входными данными:

Входные данные Поэлементная операция Алгоритм

Действительный скаляр,

Умножение

Деление

Действительный вектор или матрица с элементами,

Умножение

Деление

Комплексный скаляр,

Умножение

Деление

Комплексный вектор или матрица с элементами,

Умножение

Деление

Дополнительные возможности

Генерация Си кода: Да

Примеры