Divide
Умножение и деление скаляров и нескаляров.
|
|
|
|
|
|
Описание
Блок Divide выводит результат умножения или деления входных сигналов.
Значок блока, выполняемая операция и количество портов меняются в зависимости от значения параметров Multiplication и Number of inputs.
В этой таблице показаны выходные данные блока Divide для примерных входных данных с использованием значений параметров блока:
-
Multiplication:
Element-wise(.*)
-
Number of inputs:
*/
Входные данные | Поведение блока |
---|---|
скаляр ÷ скаляр |
Выводит результат деления первого входного скаляра на второй. |
скаляр ÷ нескаляр |
Выводит нескаляр, имеющий те же размеры, что и входной нескаляр. Каждый элемент выходного нескаляра является результатом деления входного скаляра на соответствующий элемент входного нескаляра. |
нескаляр ÷ нескаляр |
Выводит нескаляр, имеющий те же размеры, что и входные данные. Каждый элемент выходных данных является результатом деления элемента первого входного нескаляра на соответствующий элемент второго входного нескаляра. |
Блок Divide может:
-
Численно умножать и делить любое количество скалярных, векторных или матричных входных данных.
-
Выполнять матричное умножение и деление на любом количестве матричных входных данных.
Блок Divide выполняет поэлементное или матричное умножение или деление, в зависимости от значения параметра Multiplication. Блок принимает один или несколько потоков входных данных, в зависимости от параметра Number of inputs. Параметр Number of inputs также определяет операцию, которую необходимо выполнить для каждого входа.
Входными данными для блока Divide может быть любая комбинация скаляров, векторов и матриц, для которых выполняемая операция имеет математически определенный результат. Блок выполняет указанные операции над входными данными, затем выводит результат.
Блок Divide имеет два режима:
-
Element-wise mode, который обрабатывает нескалярные входные данные поэлементно.
-
Matrix mode, который обрабатывает нескалярные входные данные в виде матриц.
Element-Wise Mode
Когда вы устанавливаете Multiplication на Element-wise(.*)
, блок Divide находится в режиме Element-wise mode, в котором он работает с отдельными числовыми элементами любых нескалярных входных данных. В режиме Element-wise mode блок Divide может выполнять различные операции умножения, деления и арифметической инверсии.
Значение параметра Number of inputs определяет как количество входных данных, так и то, будет ли каждый из них умножен или разделен для формирования выходных данных.
Когда блок Divide находится в режиме Element-wise mode и имеет только один вход, он работает так, как описано в разделе Алгоритмы.
Чтобы вычислить выходные данные, блок сначала расширяет все входы до единого размера (используя стандартный broadcast), а затем выполняет поэлементные действия.
В этой таблице показаны выходные данные блока Divide для примерных входных данных с использованием указанных значений для параметра Number of inputs.
Значения параметра | Пример |
---|---|
Number of inputs: |
|
Number of inputs: |
|
Number of inputs: |
|
Number of inputs: |
|
Number of inputs: |
Matrix Mode
Когда значение параметра Multiplication равно Matrix(*)
, блок Divide находится в режиме Matrix mode, в котором он обрабатывает нескалярные входные данные в виде матриц. В этом режиме блок Divide может инвертировать одну квадратную матрицу или умножать и делить любое количество матриц, размеры которых определены математически.
Значение параметра Number of inputs определяет как количество существующих входных данных, так и то, будет ли каждая входная матрица умножена или разделена для формирования выходных данных. Синтаксис Number of inputs такой же, как и в Element-wise mode. Разница между режимами заключается в типе умножения и деления.
Взаимодействия между входами блока и режимами
Взаимодействия между входными данными блока Divide и его режимами Multiplication:
-
* или /
Блок имеет один входной порт. В режиме Element-wise mode блок обрабатывает входные данные, как описано в разделе Алгоритмы. В режиме Matrix mode, если значение параметра равно
1
или*
, блок выводит входное значение. Если значение равно/
, входные данные должны быть квадратной матрицей (включая скаляр в качестве вырожденного случая), и блок выводит обратную матрицу. Дополнительные сведения см. в разделах Element-Wise Mode и Matrix Mode. -
Целое значение > 1
Блок имеет количество входных данных, заданное целочисленным значением. Входные данные умножаются вместе в режиме Element-wise mode или в режиме Matrix mode, как указано параметром Multiplication. Дополнительные сведения см. в разделах Element-Wise Mode и Matrix Mode.
-
Строка без кавычек, состоящая из двух или более символов * и /
Блок имеет количество входных данных, заданное длиной символьного вектора. Каждый входной сигнал, соответствующий символу
*
, умножается на выходной сигнал. Каждый выходной сигнал, соответствующий символу/
, делится на входной. Операции выполняются в режиме Element-wise mode или в режиме Matrix mode, как указано параметром Multiplication. Дополнительные сведения см. в разделах Element-Wise Mode и Matrix Mode.
Порты
Вход
x — входной сигнал для умножения
скаляр
| вектор
| матрица
Входной сигнал для умножения на другие входные сигналы.
Зависимости
Чтобы использовать один или несколько портов x, укажите один или несколько символов *
для параметра Number of inputs и установите для параметра Multiplication значение Element-wise(.*)
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, Int128
, UInt8
, UInt16
, UInt32
, UInt64
, UInt128
, Fixed
, Bool
Поддержка комплексных чисел: Да
÷ — входной сигнал для деления
скаляр
| вектор
| матрица
Входной сигнал для операций деления или инверсии.
Зависимости
Чтобы использовать один или несколько портов ÷, укажите один или несколько символов /
для параметра Number of inputs и установите для параметра Multiplication значение Element-wise(.*)
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, Int128
, UInt8
, UInt16
, UInt32
, UInt64
, UInt128
, Fixed
, Bool
Поддержка комплексных чисел: Да
* — входной сигнал для умножения
скаляр
| вектор
| матрица
Входной сигнал для умножения на другие входные сигналы.
Зависимости
Чтобы использовать один или несколько портов *, укажите один или несколько символов *
для параметра Number of inputs и установите для параметра Multiplication значение Matrix(*)
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, Int128
, UInt8
, UInt16
, UInt32
, UInt64
, UInt128
, Fixed
, Bool
Поддержка комплексных чисел: Да
Inv — входной сигнал для деления или инвертирования
скаляр
| вектор
| матрица
Входной сигнал для операций деления или инверсии.
Зависимости
Чтобы использовать один или несколько портов Inv, укажите один или несколько символов /
для параметра Number of inputs и установите для параметра Multiplication значение Matrix(*)
.
Типы данных: Float16
, Float32
, Float64
, Int8
, Int16
, Int32
, Int64
, Int128
, UInt8
, UInt16
, UInt32
, UInt64
, UInt128
, Fixed
, Bool
Поддержка комплексных чисел: Да
Параметры
Main
Number of inputs — количество и названия входных портов и тип операции
*/ (по умолчанию)
Операции, выполняемые блоком: умножение или деление.
Когда вы указываете:
-
* или /*
Параметр блока |
|
Значения |
|
По умолчанию |
|
Multiplication — тип умножения
Element-wise(.*) (по умолчанию)
| Matrix(*)
Укажите, в каком режиме блок выполняет умножение или деление Element-wise(.*)
или Matrix(*)
.
Дополнительные сведения см. в разделах Element-Wise Mode и Matrix Mode.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Signal Attributes
Output data type — тип выходных данных
Inherit: auto
| Same as first input
| Int8
| Int16
| Int32
| Int64
| Int128
| UInt8
| UInt16
| UInt32
| UInt64
| UInt128
| Float16
| Float32
| Float64
| Bool
| Fixed point
Укажите тип выходных данных. Тип может быть унаследован, указан напрямую или выражен как объект типа данных.
Параметр блока |
|
Значение |
|
По умолчанию |
|
Output fixed-point type – выходной тип чисел с фиксированной точкой
Fixed{Int16, 0} (по умолчанию)
| описание типа данных с фиксированной точкой
Укажите выходной тип чисел с фиксированной точкой.
Зависимости
Включается, когда параметр Output data type установлен в значение Fixed point
.
Параметр блока |
|
Значение |
|
По умолчанию |
|
Integer rounding mode — режим округления для операций с фиксированной точкой
Floor (по умолчанию)
| Ceiling
| Convergent
| Nearest
| Round
| Zero
Выберите режим округления для операций с фиксированной точкой. Вы можете выбрать:
-
Floor
— округляет как положительные, так и отрицательные числа в меньшую сторону (в сторону отрицательной бесконечности). -
Ceiling
— округляет как положительные, так и отрицательные числа в большую сторону (в сторону положительной бесконечности). -
Convergent
— округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, число округляется до ближайшего четного целого числа. -
Nearest
— округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, число округляется в большую сторону (в сторону положительной бесконечности). -
Round
— округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, положительные числа округляются в большую сторону (в сторону положительной бесконечности), а отрицательные – в меньшую (в сторону отрицательной бесконечности).
-
Zero
— округляет число в сторону нуля.
Параметры блока всегда округляют до ближайшего представимого значения.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Saturate on integer overflow — насыщение до целого при переполнении
выключено (по умолчанию)
| включено
Флажок, при установке которого используется арифметика насыщения для целых чисел и чисел с фиксированной точкой: при переполнении результат автоматически заменяется максимально возможным (по модулю) для типа данных значением.
Действие | Обоснование | Влияние на переполнение | Пример |
---|---|---|---|
Флажок Saturate on integer overflow установлен (включен). |
Для вашей модели возможно переполнение, и вы хотите, чтобы в сгенерированном коде была явная защита от переполнения. |
При переполнении результат автоматически заменяется максимально возможным (по модулю) для типа данных значением. |
Максимальное значение, которое может представлять тип данных Любой результат операции с блоком, превышающий это максимальное значение, приводит к переполнению 8-битного целого числа. При установленном флажке выходной сигнал блока насыщается до 127. Аналогично, выходной сигнал блока насыщается при минимальном выходном значении -128. |
Флажок Saturate on integer overflow не установлен (выключен). |
Вы хотите оптимизировать эффективность вашего сгенерированного кода. Вы хотите избежать чрезмерного определения того, как блок обрабатывает сигналы, находящиеся вне диапазона. |
Переполнения переносятся в соответствующее значение, которое может быть представлено типом данных. |
Максимальное значение, которое может представлять тип данных Любой результат операции с блоком, превышающий это максимальное значение, приводит к переполнению 8-битного целого числа. Если флажок снят, программное обеспечение интерпретирует значение, вызывающее переполнение, как |
Когда вы устанавливаете этот флажок, насыщение применяется ко всем внутренним операциям в блоке, а не только к входным/выходным данным или результату.
Когда тип входных данных блока является типом с плавающей точкой, блок игнорирует этот параметр.
Параметр блока |
|
Значения |
|
По умолчанию |
|
Require all inputs to have the same data type — режим одинакового типа данных для всех входов
выключено (по умолчанию)
| включено
Установите этот флажок, чтобы задать одинаковый тип данных для всех входных портов.
Алгоритмы
Блок Divide с одним входом в режиме Element-Wise
использует представленные ниже алгоритмы для выполнения поэлементных операций над входными данными:
Входные данные | Поэлементная операция | Алгоритм |
---|---|---|
Действительный скаляр, |
Умножение |
|
Деление |
|
|
Действительный вектор или матрица с элементами, |
Умножение |
|
Деление |
|
|
Комплексный скаляр, |
Умножение |
|
Деление |
|
|
Комплексный вектор или матрица с элементами, |
Умножение |
|
Деление |
|