Divide
Выполняет умножение и деление скаляров и нескаляров.
Тип: Product
Divide Путь в библиотеке:
|
|
Product Путь в библиотеке:
|
|
Product of Elements Путь в библиотеке:
|
Описание
Блок 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(.*)
— обрабатывает нескалярные входные данные поэлементно. -
Matrix(*)
— обрабатывает нескалярные входные данные в виде матриц.
Поэлементный режим
Когда вы устанавливаете Multiplication на Element-wise(.*)
, блок Divide работает с отдельными числовыми элементами любых нескалярных входных данных. В режиме Element-wise(.*)
блок Divide может выполнять различные операции умножения, деления и арифметической инверсии.
Значение параметра Number of inputs определяет как количество входных данных, так и то, будет ли каждый из них умножен или разделен для формирования выходных данных.
Когда блок Divide находится в режиме Element-wise(.*)
и имеет только один вход, он работает так, как описано в разделе Алгоритмы.
Чтобы вычислить выходные данные, блок сначала расширяет все входы до единого размера (используя стандартный broadcast), а затем выполняет поэлементные действия.
В этой таблице показаны выходные данные блока Divide для примерных входных данных с использованием указанных значений для параметра Number of inputs.
Значения параметра | Пример |
---|---|
Number of inputs: |
|
Number of inputs: |
|
Number of inputs: |
|
Number of inputs: |
|
Number of inputs: |
Матричный режим
Когда значение параметра Multiplication равно Matrix(*)
, блок Divide обрабатывает нескалярные входные данные в виде матриц. В этом режиме блок Divide может инвертировать одну квадратную матрицу или умножать и делить любое количество матриц, размеры которых определены математически.
Значение параметра Number of inputs определяет как количество существующих входных данных, так и то, будет ли каждая входная матрица умножена или разделена для формирования выходных данных. Синтаксис Number of inputs такой же, как и для режима Element-wise(.*)
. Разница между режимами заключается в типе умножения и деления.
Взаимодействия между входами блока и режимами
Взаимодействия между входными данными блока Divide и его режимами Multiplication:
-
В параметре Number of inputs заданы значения
1
,*
или/
.Блок имеет один входной порт. В режиме
Element-wise(.*)
блок обрабатывает входные данные, как описано в разделе Алгоритмы. В режимеMatrix(*)
, если значение параметра равно1
или*
, то блок выводит входное значение. Если значение равно/
, входные данные должны быть квадратной матрицей (включая скаляр в качестве вырожденного случая), и блок выводит обратную матрицу. Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим. -
В параметре Number of inputs задано целое значение > 1
Блок имеет количество входных данных, заданное целочисленным значением. Входные данные умножаются вместе в режиме
Element-wise(.*)
или в режимеMatrix(*)
, как указано параметром Multiplication. Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим. -
В параметре Number of inputs задана строка без кавычек, состоящая из двух или более символов
*
и/
Блок имеет количество входных данных, заданное длиной символьного вектора. Каждый входной сигнал, соответствующий символу
*
, умножается на выходной сигнал. Каждый выходной сигнал, соответствующий символу/
, делится на входной. Операции выполняются в режимеElement-wise(.*)
или в режимеMatrix(*)
, как указано параметром Multiplication. Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим.
Порты
Выход
#
OUT_1
—
выходной сигнал
скаляр
| вектор
| матрица
Details
Выходной сигнал, вычисляемый путем умножения или деления входных сигналов.
Типы данных |
|
Поддержка комплексных чисел |
Да |
Вход
#
x
—
входной сигнал для умножения
скаляр
| вектор
| матрица
Details
Входной сигнал для умножения на другие входные сигналы.
Зависимости
Чтобы использовать один или несколько портов x, укажите один или несколько символов *
для параметра Number of inputs и установите для параметра Multiplication значение Element-wise(.*)
.
Чтобы использовать один или несколько портов *, укажите один или несколько символов *
для параметра Number of inputs и установите для параметра Multiplication значение Matrix(*)
.
Типы данных |
|
Поддержка комплексных чисел |
Да |
#
/
—
входной сигнал для деления или инверсии
скаляр
| вектор
| матрица
Details
Входной сигнал для операций деления или инверсии.
Зависимости
Чтобы использовать один или несколько портов ÷, укажите один или несколько символов /
для параметра Number of inputs и установите для параметра Multiplication значение Element-wise(.*)
.
Чтобы использовать один или несколько портов Inv, укажите один или несколько символов /
для параметра Number of inputs и установите для параметра Multiplication значение Matrix(*)
.
Типы данных |
|
Поддержка комплексных чисел |
Да |
Параметры
Основные
# Number of inputs — количество и названия входных портов и тип операции
Details
Операции, выполняемые блоком: умножение или деление.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
#
Multiplication —
тип умножения
Element-wise(.)
| Matrix(
)
Details
Укажите, в каком режиме блок выполняет умножение или деление Element-wise(.*)
или Matrix(*)
.
Дополнительные сведения см. в разделах Поэлементный режим и Матричный режим.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
Настройки выхода
#
Output data type —
тип выходных данных
Inherit: auto
| Same as first input
| Float64
| Float32
| Float16
| Int8
| UInt8
| Int16
| UInt16
| Int32
| UInt32
| Int64
| UInt64
| Int128
| UInt128
| Fixed-point
Details
Укажите тип выходных данных. Тип может быть унаследован или указан напрямую.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Output fixed-point type —
тип выходных данных с фиксированной точкой
Data type
Details
Укажите тип выходных данных с фиксированной точкой.
Зависимости
Чтобы использовать этот параметр, установите для параметра Output data type значение Fixed-point
.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Да |
Основные
#
Integer rounding mode —
режим округления для операций с фиксированной точкой
Ceiling
| Convergent
| Floor
| Nearest
| Round
| Zero
Details
Выберите режим округления для операций с фиксированной точкой. Вы можете выбрать:
-
Floor
— округляет как положительные, так и отрицательные числа в меньшую сторону (в сторону отрицательной бесконечности). -
Ceiling
— округляет как положительные, так и отрицательные числа в большую сторону (в сторону положительной бесконечности). -
Convergent
— округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, число округляется до ближайшего четного целого числа. -
Nearest
— округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, число округляется в большую сторону (в сторону положительной бесконечности). -
Round
— округляет число до ближайшего представимого значения. В случае если дробная часть числа оканчивается на 5, положительные числа округляются в большую сторону (в сторону положительной бесконечности), а отрицательные – в меньшую (в сторону отрицательной бесконечности).
-
Zero
— округляет число в сторону нуля.
Значения |
|
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Saturate on integer overflow —
метод действия при переполнении
Logical
Details
При установке этого флажка насыщение применяется ко всем внутренним операциям блока, а не только к выходу или результату.
Действие | Причины для принятия этого решения | Что происходит при переполнении | Пример |
---|---|---|---|
Установите этот флажок. |
В вашей модели возможно переполнение, и вам нужна явная защита от насыщения в генерируемом коде. |
Переполнения насыщаются до минимального или максимального значения, которое может представлять данный тип данных. |
Переполнение, связанное со знаковым 8-битным целым числом, может насытиться до |
Не устанавливайте этот флажок. |
Вы хотите оптимизировать эффективность генерируемого кода. |
Переполнения оборачиваются в соответствующее значение, которое может быть представлено типом данных. |
Число |
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
#
Require all inputs to have the same data type —
режим одинакового типа данных для всех входов
Logical
Details
Установите этот флажок, чтобы задать одинаковый тип данных для всех входных портов.
Значение по умолчанию |
|
Имя для программного использования |
|
Настраиваемый |
Нет |
Вычисляемый |
Нет |
Алгоритмы
Блок Divide с одним входом в режиме Element-wise(.*)
использует представленные ниже алгоритмы для выполнения поэлементных операций над входными данными:
Входные данные | Поэлементная операция | Алгоритм |
---|---|---|
Действительный скаляр, |
Умножение |
|
Деление |
|
|
Действительный вектор или матрица с элементами, |
Умножение |
|
Деление |
|
|
Комплексный скаляр, |
Умножение |
|
Деление |
|
|
Комплексный вектор или матрица с элементами, |
Умножение |
|
Деление |
|
Примеры
-
Расчёт численности населения с использованием командного управления в циклах
-
Моделирование соленоида с помощью базовых блоков и блоков физического моделирования
-
Автоматизация расчёта времени восхода и заката Солнца для при помощи обратных вызовов
-
Полунатурное моделирование на КПМ РИТМ (Управление задвижкой по Modbus)