Продукт
Умножьте и разделите скаляры и нескаляры или умножьте и инвертируйте матрицы
Описание
Блок продукта выводит результат умножения двух входных параметров: два скаляра, скаляр и нескалярное, или два нескаляра, которые имеют те же размерности. Значения параметров по умолчанию, которые задают это поведение:
Эта таблица показывает, что вывод блока продукта, например, вводит блочные значения параметров значения по умолчанию использования.
Вводы и поведение | Пример |
---|
Скаляр X скаляров Выведите продукт двух входных параметров. |
|
Скаляр X нескалярный Выведите нескалярное наличие тех же размерностей как нескалярный входной параметр. Каждый элемент нескалярного вывода является продуктом входного скаляра и соответствующим элементом нескалярного входного параметра. |
|
Нескалярный X нескалярный Выведите нескалярное наличие тех же размерностей как входные параметры. Каждый элемент вывода является продуктом соответствующих элементов входных параметров. |
|
Деление и продукт блоков Элементов являются вариантами блока продукта.
Для получения информации о блоке Divide смотрите, Делятся.
Для получения информации о продукте блока Elements смотрите продукт Элементов.
Блок продукта (или блок Divide или продукт блока Elements, если соответственно сконфигурировано) могут:
Численно умножьте и разделите любое количество скаляра, вектора или матричных входных параметров
Выполните умножение матриц и деление на любом количестве матричных входных параметров
Блок продукта выполняет скалярное умножение или умножение матриц, в зависимости от значения параметра Умножения. Блок принимает один или несколько входных параметров, в зависимости от Количества входного параметра. Количество входного параметра также задает операцию, чтобы выполнить на каждом входном параметре.
Блок продукта может ввести любую комбинацию скаляров, векторов и матриц, для которых операция выполнить имеет математически заданный результат. Блок выполняет заданные операции на входных параметрах, затем выводит результат.
Блок продукта имеет два режима: Поэлементный режим, который процессы нескалярные входные параметры поэлементно и режим Matrix, который процессы нескалярные входные параметры как матрицы.
Поэлементный режим
Когда вы устанавливаете Умножение на Element-wise(.*)
, блок продукта находится в Поэлементном режиме, в котором это работает с отдельными числовыми элементами любых нескалярных входных параметров. Эквивалентным MATLAB® является .*
оператор. В поэлементном режиме блок продукта может выполнить разнообразие умножения, деления и арифметических операций инверсии.
Значение Количества входного параметра управляет и сколько входных параметров существует и умножен ли каждый или разделен, чтобы сформировать вывод. Когда блок продукта находится в поэлементном режиме и имеет только один входной параметр, это функционально эквивалентно продукту блока Elements. Когда блок имеет несколько входных параметров, любые нескалярные входные параметры должны иметь идентичные размерности, и блок выводит нескалярное с теми размерностями. Чтобы вычислить вывод, блок сначала расширяет любой скалярный входной параметр до нескалярного, которое имеет те же размерности как нескалярные входные параметры.
Эта таблица показывает, что вывод блока продукта, например, вводит, с помощью указанных значений для Количества входного параметра.
Значения параметров | Примеры |
---|
Количество входных параметров:
2 |
|
Количество входных параметров:
*/ |
|
Количество входных параметров:
/**/ |
|
Количество inputs:** |
|
Количество входных параметров:
*/* |
|
Матричный режим
Когда значением параметра Умножения является Matrix(*)
, блок продукта находится в режиме Matrix, в котором это обрабатывает нескалярные входные параметры как матрицы. Эквивалентный MATLAB является оператором *
. В режиме Matrix блок продукта может инвертировать единственную квадратную матрицу, или умножить и разделить любое количество матриц, которые имеют размерности, для которых математически задан результат.
Значение Количества входного параметра управляет и сколько входных параметров существует и умножена ли каждая входная матрица или разделена, чтобы сформировать вывод. Синтаксис Количества входных параметров эквивалентен в поэлементном режиме. Различие между режимами находится в типе умножения и деления, которые происходят.
Ожидаемые различия между моделированием и генерацией кода
Для поэлементных операций на комплексных входных параметрах с плавающей точкой моделирование и результаты генерации кода могут отличаться по случаям почти переполнения. Несмотря на то, что комплексные числа выбраны, и неличные числа не выбран на > панель диалогового окна Configuration Parameters, генератор кода не испускает код особого случая для промежуточного переполнения. Этот метод повышает эффективность встроенных операций для общего случая, который не включает экстремумы. Если входные параметры могли бы включать экстремумы, необходимо управлять этими случаями явным образом.
Сгенерированный код не может произвести тот же самый шаблон NaN
и значений inf
как моделирование, когда эти значения математически бессмысленны. Например, если моделирование, вывод содержит NaN
, выведенный от сгенерированного кода также, содержит NaN
, но не обязательно в том же месте.
Порты
Входной параметр
развернуть все
Port_1
— Сначала введите, чтобы умножиться или разделиться
скаляр | вектор | матрица | массив N-D
Сначала введите, чтобы умножиться или разделиться, обеспеченный как скаляр, вектор, матрица или массив N-D.
Типы данных: единственный
| удваиваются
| int8
| int16
| int32
| uint8
| uint16
| uint32
| булевская переменная
| фиксированная точка
Port_N
— Энный входной параметр, чтобы умножиться или разделиться
скаляр | вектор | матрица | массив N-D
Энный входной параметр, чтобы умножиться или разделиться, обеспеченный как скаляр, вектор, матрица или массив N-D.
Типы данных: единственный
| удваиваются
| int8
| int16
| int32
| uint8
| uint16
| uint32
| булевская переменная
| фиксированная точка
X
Входной сигнал, чтобы умножиться
скаляр | вектор | матрица | массив N-D
Входной сигнал, который будет умножен с другими входными параметрами.
Зависимости
Чтобы включить одному или нескольким X портов, задайте один или несколько символов *
для Количества входного параметра.
Типы данных: единственный
| удваиваются
| int8
| int16
| int32
| uint8
| uint16
| uint32
| булевская переменная
| фиксированная точка
÷
— Входной сигнал, чтобы разделиться или инвертировать
скаляр | вектор | матрица | массив N-D
Входной сигнал для операций деления или инверсии.
Зависимости
Чтобы включить один или несколько ÷ портов, задайте один или несколько символов /
для Количества входного параметра.
Типы данных: единственный
| удваиваются
| int8
| int16
| int32
| uint8
| uint16
| uint32
| булевская переменная
| фиксированная точка
Вывод
развернуть все
Port_1
— Выведите вычисленный путем умножения, делясь или инвертируя входные параметры
скаляр | вектор | матрица | массив N-D
Выведите вычисленный путем умножения, делясь или инвертируя входные параметры.
Типы данных: единственный
| удваиваются
| int8
| int16
| int32
| uint8
| uint16
| uint32
| булевская переменная
| фиксированная точка
Параметры
развернуть все
Основной
Number of inputs
— Контрольное число входных параметров и тип операции
2
(значение по умолчанию) | скаляр | *
или /
для каждого входного порта
Управляйте двумя свойствами блока:
Когда вы задаете:
1
или *
или /
Блок имеет один входной порт. В поэлементном режиме блок обрабатывает входной параметр, как описано для продукта блока Elements. В матричном режиме, если значением параметров является 1
или *
, блок выводит входное значение. Если значением является /
, входной параметр должен быть квадратной матрицей (включая скаляр как вырожденный случай), и блок выводит матричную инверсию. Смотрите Поэлементный Режим и Матричный Режим для получения дополнительной информации.
Целочисленное значение> 1
Блок имеет количество входных параметров, данных целочисленным значением. Входные параметры умножаются вместе в поэлементном режиме или матричном режиме, как задано параметром Умножения. Смотрите Поэлементный Режим и Матричный Режим для получения дополнительной информации.
Неупомянутая строка двух или больше *
и символов /
Блок имеет количество входных параметров, данных длиной вектора символа. Каждый входной параметр, который соответствует символу *
, умножается в вывод. Каждый входной параметр, который соответствует символу /
, разделен на вывод. Операции происходят в поэлементном режиме или матричном режиме, как задано параметром Умножения. Смотрите Поэлементный Режим и Матричный Режим для получения дополнительной информации.
Программируемое использование
Блочный параметр:
Inputs |
Ввод: символьный вектор |
Значения:
'2' | '**' | '* /' | '*/*' |... |
Значение по умолчанию:
'2' |
Multiplication
— Поэлементный (.*) или Матрица (*) умножение
Element-wise(.*)
(значение по умолчанию) | Matrix(*)
Задайте, выполняет ли блок умножение Matrix(*)
или Element-wise(.*)
.
Программируемое использование
Блочный параметр:
Multiplication |
Ввод: символьный вектор |
Значения:
'Поэлементный (.*)' | 'Матрица (*)' |
Значение по умолчанию:
'Element-wise(.*)' |
Multiply over
— Все размерности или заданное измерение
All dimensions
(значение по умолчанию) | Specified dimension
Задайте размерность, чтобы умножиться по как All dimensions
или Specified dimension
. Когда вы выбираете Specified dimension
, можно задать Размерность как 1
или 2
.
Зависимости
Чтобы включить этот параметр, определите Номер входных параметров к *
и Умножения к Element-wise (.*)
.
Программируемое использование
Блочный параметр: CollapseMode |
Ввод: символьный вектор |
Значения: 'Все размерности' | 'Заданное измерение' |
Значение по умолчанию: 'All dimensions' |
Dimension
— Размерность, чтобы умножиться
1
(значение по умолчанию) | 2
| ...
| N
Задайте размерность, чтобы умножиться по как целое число, меньше чем или равное количеству размерностей входного сигнала.
Зависимости
Чтобы включить этот параметр, установите:
Количество входных параметров к *
Умножение к Element-wise (.*)
Умножьтесь к Specified dimension
Программируемое использование
Блочный параметр: CollapseDim |
Ввод: символьный вектор |
Значения:
'1' | '2' |... |
Значение по умолчанию: '1' |
'SampleTime'
Задайте частоту дискретизации как значение кроме -1
-1
(значение по умолчанию) | скаляр
Задайте частоту дискретизации как значение кроме-1. Для получения дополнительной информации см. Настройку времени выборки.
Зависимости
Этот параметр не видим, если он явным образом не установлен в значение кроме -1
. Чтобы узнать больше, смотрите Блоки, для Которых Не Рекомендуется Частота дискретизации.
Программируемое использование
Блочный параметр:
'SampleTime' |
Ввод: символьный вектор |
Значения: скаляр |
Значение по умолчанию:
'-1' |
Атрибуты сигнала
Require all inputs to have the same data type
— Потребуйте, чтобы все входные параметры имели совпадающий тип данных
off
(значение по умолчанию) | on
Задайте, должны ли входные сигналы все иметь совпадающий тип данных. Если вы включаете этот параметр, то ошибка происходит во время моделирования, если типы входного сигнала отличаются.
Программируемое использование
Блочный параметр:
InputSameDT |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Output minimum
— Минимальное выходное значение для проверки диапазона
[]
(значение по умолчанию) | скаляр
Нижнее значение выходной области значений, которую проверяет Simulink®.
Симулинк использует минимум, чтобы выполнить:
Примечание
Выведите минимум, не насыщает или отсекает фактический выходной сигнал. Используйте блок Saturation вместо этого.
Программируемое использование
Блочный параметр: OutMin |
Ввод: символьный вектор |
Значения:' []' | скаляр |
Значение по умолчанию: '[ ]' |
Output maximum
— Максимальное выходное значение для проверки диапазона
[]
(значение по умолчанию) | скаляр
Верхнее значение выходной области значений это Simulink Check.
Симулинк использует максимальное значение, чтобы выполнить:
Примечание
Выведите максимум, не насыщает или отсекает фактический выходной сигнал. Используйте блок Saturation вместо этого.
Программируемое использование
Блочный параметр: OutMax |
Ввод: символьный вектор |
Значения:' []' | скаляр |
Значение по умолчанию: '[ ]' |
Output data type
— Задайте тип выходных данных
Inherit: Inherit via internal rule
(значение по умолчанию) | Inherit: Inherit via back propagation
| Inherit: Same as first input
| double
| single
| int8
| uint8
| int16
| uint16
| int32
| uint32
| fixdt(1,16)
| fixdt(1,16,0)
| fixdt(1,16,2^0,0)
| <data type expression>
Выберите тип данных для вывода. Тип может быть наследован, задан непосредственно или выражен как объект типа данных, такой как Simulink.NumericType
. Для получения дополнительной информации смотрите Типы данных Управляющего сигнала.
Когда вы выбираете наследованную опцию, блок ведет себя можно следующим образом:
Inherit: Inherit via internal rule
— Симулинк выбирает тип данных, чтобы сбалансировать числовую точность, производительность и размер сгенерированного кода, при принятии во внимание свойств аппаратных средств целевого процессора. Если вы изменяете настройки целевого процессора, тип данных, выбранный внутренним правилом, может измениться. Например, если блок умножает входной параметр типа, int8
усилением int16
и ASIC/FPGA
задан как целенаправленный тип оборудования, типом выходных данных является sfix24
. Если Unspecified (assume 32-bit Generic)
, другими словами, типичный 32-битный микропроцессор, задан как целевой компьютер, типом выходных данных является int32
. Если ни один из размеров слова, обеспеченных целевым микропроцессором, не может разместить выходную область значений, программное обеспечение Симулинка отображает ошибку в Диагностическом Средстве просмотра.
Для программного обеспечения не всегда возможно оптимизировать эффективность кода и числовую точность в то же время. Если внутреннее правило не удовлетворяет ваши определенные потребности для числовой точности или производительности, используйте одну из следующих опций:
Задайте тип выходных данных явным образом.
Используйте простой выбор Inherit: Same as input
.
Явным образом задайте тип данных по умолчанию, такой как fixdt(1,32,16)
и затем используйте Fixed-Point Tool, чтобы предложить типы данных для вашей модели. Для получения дополнительной информации смотрите fxptdlg
.
Чтобы задать ваше собственное правило наследования, используйте Inherit: Inherit via back propagation
и затем используйте блок Data Type Propagation. Примеры того, как использовать этот блок, доступны в библиотеке Signal Attributes блок Data Type Propagation Examples.
Inherit: Inherit via back propagation
— Используйте тип данных ведущего блока.
Inherit: Same as first input
— Используйте тип данных первого входного сигнала.
Программируемое использование
Блочный параметр: OutDataTypeStr |
Ввод: символьный вектор |
Значения: 'Наследуйтесь: Наследуйтесь через внутреннее правило |, 'Наследуйтесь: То же самое, как сначала введено' | 'Наследовалось: Наследуйтесь через обратное распространение' | 'дважды' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'fixdt (1,16)' | 'fixdt (1,16,0)' | 'fixdt (1,16,2^0,0)' |' <выражение типа данных>' |
Значение по умолчанию: 'Inherit: Inherit via internal rule' |
Lock output data type setting against changes by the fixed-point tools
— Препятствуйте тому, чтобы Fixed-Point Tool заменили тип Выходных данных
off
(значение по умолчанию) | on
Выберите этот параметр, чтобы препятствовать тому, чтобы Fixed-Point Tool заменили тип Выходных данных, который вы задаете на блоке. Для получения дополнительной информации смотрите, что Тип Выходных данных Блокировки Использования Устанавливает (Fixed-Point Designer).
Программируемое использование
Блочный параметр:
LockScale |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию:
'off' |
Режим Integer rounding mode
— Rounding для операций фиксированной точки
Floor
(значение по умолчанию) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
Выберите округляющийся режим для операций фиксированной точки. Можно выбрать:
Ceiling
Округляет положительные и отрицательные числа к положительной бесконечности. Эквивалентный функции ceil
MATLAB.
Convergent
Номер раундов к самому близкому представимому значению. Если связь происходит, раунды к самому близкому даже целое число. Эквивалентный Фиксированной точке Designer™ функция convergent
.
Пол
Округляет положительные и отрицательные числа к отрицательной бесконечности. Эквивалентный функции floor
MATLAB.
Самый близкий
Номер раундов к самому близкому представимому значению. Если связь происходит, раунды к положительной бесконечности. Эквивалентный Fixed-Point Designer функция nearest
.
Вокруг
Номер раундов к самому близкому представимому значению. Если связь происходит, округляет положительные числа к положительной бесконечности и округляет отрицательные числа к отрицательной бесконечности. Эквивалентный Fixed-Point Designer функция round
.
Simplest
Принимает решение между округлением к полу и округлением к нулю сгенерировать округление кода, который максимально эффективен.
Zero
Номер раундов к нулю. Эквивалентный функции fix
MATLAB.
Для получения дополнительной информации смотрите Округление (Fixed-Point Designer).
Блокируйте параметры всегда вокруг к самому близкому представимому значению. Чтобы управлять округлением блочного параметра, введите выражение с помощью MATLAB, округляющего функцию в поле маски.
Программируемое использование
Блочный параметр:
RndMeth |
Ввод: символьный вектор |
Значения:
'Потолок' | 'Конвергентный' | 'Пол' | 'Самый близкий' | 'Вокруг' | 'Самый Простой' | 'Нуль' |
Значение по умолчанию:
пол |
Saturate on integer overflow
— Метод действия переполнения
off
(значение по умолчанию) | on
Задайте, насыщает ли переполнение или переносится.
Действие | Объяснение | Повлияйте на переполнении | Пример |
---|
Установите этот флажок (on ).
|
Ваша модель имеет возможное переполнение, и вы хотите явную защиту насыщенности в сгенерированном коде.
|
Переполнение насыщает или к минимальному или к максимальному значению, которое может представлять тип данных.
|
Максимальное значение, которое может представлять int8 (подписанное, 8-битное целое число) тип данных, равняется 127. Любой результат блочной операции, больше, чем это максимальное значение, вызывает переполнение 8-битного целого числа. С установленным флажком блок вывод насыщает в 127. Точно так же блок вывод насыщает в минимальном выходном значении-128.
|
Не устанавливайте этот флажок (off ).
|
Вы хотите оптимизировать эффективность своего сгенерированного кода.
Вы не хотите чрезмерно определять, как блок обрабатывает сигналы из области значений. Для получения дополнительной информации смотрите Проверку на Ошибки Диапазона сигнала.
|
Переполнение переносится к соответствующему значению, которое является представимым, по условию вводят.
|
Максимальное значение, которое может представлять int8 (подписанное, 8-битное целое число) тип данных, равняется 127. Любой результат блочной операции, больше, чем это максимальное значение, вызывает переполнение 8-битного целого числа. Со снятым флажком программное обеспечение интерпретирует вызывающее переполнение значение как int8 , который может привести к непреднамеренному результату. Например, блочный результат 130 (двоичный файл 1000 0010) выраженный как int8 ,-126.
|
Когда вы устанавливаете этот флажок, насыщенность применяется к каждой внутренней операции на блоке, не только выводу или результату. Обычно, процесс генерации кода может обнаружить, когда переполнение не возможно. В этом случае генератор кода не производит код насыщенности.
Программируемое использование
Блочный параметр: SaturateOnIntegerOverflow |
Ввод: символьный вектор |
Значения:
'off' | 'on' |
Значение по умолчанию: 'off' |
Блокируйте характеристики
Типы данных | double | single | Boolean | base integer | fixed point
|
Прямое сквозное соединение | No
|
Многомерные сигналы | Yes
|
Сигналы переменного размера | Yes
|
Обнаружение пересечения нулем | No
|
Расширенные возможности
Генерация кода C/C++
Генерация кода C и C++ с помощью Simulink® Coder™.
Генерация HDL-кода
Сгенерируйте Verilog и код VHDL для FPGA и проектов ASIC с помощью HDL Coder™.
Для получения дополнительной информации о генерации HDL-кода смотрите продукт.
Генерация кода PLC
Сгенерируйте код Структурированного текста с помощью Simulink® PLC Coder™.
Преобразование фиксированной точки
Преобразуйте алгоритмы с плавающей точкой в фиксированную точку с помощью Фиксированной точки Designer™.
Представлено до R2006a