exponenta event banner

Продукт

Умножение и деление скаляров и нескаляров или умножение и инвертирование матриц

  • Библиотека:
  • Simulink/Часто используемые блоки

    Операции с симуляцией/математикой

    Кодер HDL/обычно используемые блоки

    Кодер HDL/Операции с плавающей точкой HDL

    Кодер HDL/Математические операции

  • Product block

Описание

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

  • Умножение: Element-wise(.*)

  • Количество входов: 2

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

Входные данные и поведениеПример

Скалярный X скалярный

Выведите произведение двух входов.

Скалярный X нескалярный

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

Нескалярный X нескалярный

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

Блоки Разделить (Divide) и Продукт элементов (Product of Elements) являются вариантами блока Продукт (Product).

Блок «Product» (или блок «Divide» или блок «Product of Elements» при соответствующей настройке) может:

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

  • Умножение и деление матрицы на любое количество входов матрицы

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

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

Блок Product имеет два режима: Element-wise mode, который обрабатывает нескалярные входы по элементам, и Matrix mode, который обрабатывает нескалярные входы как матрицы.

Режим «По элементам»

Если для параметра «Умножение» задано значение Element-wise(.*), блок Product находится в режиме Element-wise, в котором он работает с отдельными числовыми элементами любых нескалярных входов. Эквивалентом MATLAB ® является .* оператор. В элементном режиме блок произведения может выполнять множество операций умножения, деления и арифметической инверсии.

Значение параметра Количество входов определяет, сколько входов существует и умножается или делится каждый из них для формирования выходного сигнала. Если блок Product находится в элементном режиме и имеет только один вход, он функционально эквивалентен блоку Product of Elements. Когда блок имеет несколько входов, любые нескалярные входы должны иметь идентичные размеры, а блок выводит нескалярные с этими размерами. Чтобы вычислить вывод, блок сначала расширяет скалярный ввод до нескалярного, который имеет те же размеры, что и нескалярный ввод.

В этой таблице показаны выходные данные блока Product, например входные данные, с использованием указанных значений параметра Number of inputs.

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

Количество входов: 2

Количество входов: */

Количество входов: /**/

Количество входов:**

Количество входов: */*

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

Если параметр Multiplication имеет значение Matrix(*), блок Product находится в режиме Matrix, в котором он обрабатывает нескалярные входные данные в виде матриц. Эквивалентом MATLAB является * оператор. В режиме «Матрица» блок «Произведение» может инвертировать одну квадратную матрицу или умножить и разделить любое число матриц, имеющих размеры, для которых результат математически определен.

Значение параметра Количество входов управляет количеством входов и тем, умножается ли или делится каждая входная матрица для формирования выхода. Синтаксис параметра Number of input (количество входов) аналогичен синтаксису в режиме element-wise. Разница между режимами заключается в типе происходящего умножения и деления.

Ожидаемые различия между моделированием и созданием кода

Для операций по элементам на сложных входах с плавающей запятой результаты моделирования и генерации кода могут отличаться в случаях, близких к переполнению. Несмотря на то, что в диалоговом окне «Параметры конфигурации» (Configuration Parameters) выбраны комплексные номера и не выбраны неграничные номера на панели «Создание кода» (Code Generation) > «Интерфейс» (Interface), генератор кода не выдает код особого случая для промежуточных переполнений. Этот способ повышает эффективность встроенных операций для общего случая, который не включает экстремальные значения. Если входные данные могут содержать экстремальные значения, необходимо явно управлять этими случаями.

Сгенерированный код может создать не тот же шаблон NaN и inf значения как моделирование, когда эти значения математически бессмысленны. Например, если выходные данные моделирования содержат NaN, вывод из сгенерированного кода также содержит NaN, но не обязательно там же.

Порты

Вход

развернуть все

Первый вход для умножения или деления, предоставляемый в виде скаляра, вектора, матрицы или N-D массива.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

N-ый вход для умножения или деления, предоставляемый в виде скаляра, вектора, матрицы или N-D массива.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

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

Зависимости

Чтобы включить один или несколько портов X, укажите один или несколько * символы параметра Number of inputs.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

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

Зависимости

Чтобы включить один или несколько, укажите один или несколько / символы параметра Number of inputs.

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

Продукция

развернуть все

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

Типы данных: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

Параметры

развернуть все

Главный

Управление двумя свойствами блока:

  • Количество входных портов в блоке

  • Умножается ли каждый вход или делится на выход

При указании:

  • 1 или * или /

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

  • Целое значение > 1

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

  • Строка без кавычек из двух или более * и / персонажи

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

Программное использование

Параметр блока: Inputs
Текст: символьный вектор
Значения: '2' | '**' | '*/' | '*/*' | ...
По умолчанию: '2'

Укажите, выполняет ли блок Element-wise(.*) или Matrix(*) умножение.

Программное использование

Параметр блока: Multiplication
Текст: символьный вектор
Значения: 'Element-wise(.*)' | 'Matrix(*)'
По умолчанию: 'Element-wise(.*)'

Укажите размер для умножения как All dimensions, или Specified dimension. При выборе Specified dimension, можно указать размер как 1 или 2.

Зависимости

Чтобы включить этот параметр, задайте для параметра Количество входов значение * и умножение до Element-wise (.*).

Программное использование

Параметр блока: CollapseMode
Текст: символьный вектор
Значения: 'All dimensions' | 'Specified dimension'
По умолчанию: 'All dimensions'

Укажите размер для умножения как целое число, меньшее или равное числу размеров входного сигнала.

Зависимости

Чтобы включить этот параметр, установите:

  • Количество входов в *

  • Умножение до Element-wise (.*)

  • Умножить на Specified dimension

Программное использование

Параметр блока: CollapseDim
Текст: символьный вектор
Значения: '1' | '2' | ...
По умолчанию: '1'

Укажите время выборки в качестве значения, отличного от -1. Дополнительные сведения см. в разделе Указание времени образца.

Зависимости

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

Программное использование

Параметр блока: SampleTime
Текст: символьный вектор
Значения: скаляр или вектор
По умолчанию: '-1'

Атрибуты сигнала

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

Программное использование

Параметр блока: InputSameDT
Текст: символьный вектор
Значения: 'off' | 'on'
По умолчанию: 'off'

Меньшее значение диапазона вывода, которое проверяет Simulink ®.

Simulink использует минимум для выполнения:

Примечание

Минимальный выходной сигнал не насыщает и не отсекает фактический выходной сигнал. Вместо этого используйте блок «Насыщенность».

Программное использование

Параметр блока: OutMin
Текст: символьный вектор
Значения: '[ ]'| скаляр
По умолчанию: '[ ]'

Верхнее значение диапазона вывода, которое проверяет Simulink.

Simulink использует максимальное значение для выполнения:

Примечание

Выходной максимум не насыщает и не отсекает фактический выходной сигнал. Вместо этого используйте блок «Насыщенность».

Программное использование

Параметр блока: OutMax
Текст: символьный вектор
Значения: '[ ]'| скаляр
По умолчанию: '[ ]'

Выберите тип данных для вывода. Тип может быть унаследован, указан непосредственно или выражен как объект типа данных, например Simulink.NumericType. Дополнительные сведения см. в разделе Типы данных управляющих сигналов.

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

  • Inherit: Inherit via internal rule - Simulink выбирает тип данных, чтобы сбалансировать числовую точность, производительность и размер сгенерированного кода, принимая во внимание свойства встроенного целевого оборудования. При изменении параметров встроенного целевого объекта тип данных, выбранный внутренним правилом, может измениться. Например, если блок умножает вход типа int8 на выигрыш в размере int16 и ASIC/FPGA указан как целевой тип аппаратных средств, тип выходных данных: sfix24. Если Unspecified (assume 32-bit Generic)другими словами, общий 32-разрядный микропроцессор, указывается в качестве целевого аппаратного обеспечения, тип выходных данных - int32. Если длина слов, обеспечиваемая целевым микропроцессором, не может соответствовать диапазону вывода, программное обеспечение Simulink отображает ошибку в средстве просмотра диагностики.

  • Inherit: Keep MSB- Simulink выбирает тип данных, который поддерживает полный диапазон операций, затем снижает точность вывода до размера, соответствующего встроенному целевому оборудованию.

    Совет

    Для более эффективного создания кода отмените выбор параметра Saturate on integer overflow.

    Это правило никогда не приводит к переполнению.

  • Inherit: Match scaling- Simulink выбирает тип данных, масштабирование которого соответствует масштабированию входных типов. Если полный диапазон типа не помещается на встроенном целевом оборудовании, диапазон уменьшается, давая тип, соответствующий встроенному целевому оборудованию. Это правило может привести к переполнению. Это правило не поддерживает умножение между комплексными сигналами

    Inherit: Keep MSB и Inherit: Match scaling правила не поддерживают умножение между комплексными сигналами или сигналами с ненулевым смещением. Правила поддерживают только умножение и деление ('**', '*/', '/*') между двумя входами, матричное умножение двух входов и свертывание произведения двух элементов вектора.

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

    • Явно укажите тип выходных данных.

    • Используйте простой выбор Inherit: Same as input.

    • Явно укажите тип данных по умолчанию, например fixdt(1,32,16) а затем с помощью инструмента «Фиксированная точка» предложите типы данных для модели. Дополнительные сведения см. в разделе fxptdlg (Конструктор фиксированных точек).

    • Чтобы указать собственное правило наследования, используйте Inherit: Inherit via back propagation а затем используйте блок распространения типа данных. Примеры использования этого блока доступны в блоке Примеры распространения типов данных библиотеки атрибутов сигнала.

  • Inherit: Inherit via back propagation - Использовать тип данных управляющего блока.

  • Inherit: Same as first input - Использовать тип данных первого входного сигнала.

Зависимости

Если входные данные имеют тип данных с плавающей запятой, меньший, чем единичная точность, Inherit: Inherit via internal rule тип выходных данных зависит от настройки выходного типа Inherit с плавающей запятой, меньшего, чем параметр конфигурации с одинарной точностью. Типы данных меньше, чем единичная точность, когда количество битов, необходимое для кодирования типа данных, меньше, чем 32 бита, необходимых для кодирования типа данных с одинарной точностью. Например, half и int16 меньше, чем единичная точность.

Программное использование

Параметр блока: OutDataTypeStr
Текст: символьный вектор
Значения: 'Inherit: Inherit via internal rule | 'Inherit: Keep MSB'| 'Inherit: Match scaling'| 'Inherit: Same as first input' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'half' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'uint64'|'int64'|'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
По умолчанию: 'Inherit: Inherit via internal rule'

Выберите этот параметр, чтобы инструменты с фиксированной точкой не переопределяли тип данных «Вывод», указанный в блоке. Дополнительные сведения см. в разделе Использование параметров типа выходных данных блокировки (конструктор фиксированных точек).

Программное использование

Параметр блока: LockScale
Текст: символьный вектор
Значения: 'off' | 'on'
По умолчанию: 'off'

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

Ceiling

Округляет положительные и отрицательные числа в сторону положительной бесконечности. Эквивалентно MATLAB ceil функция.

Convergent

Округляет число до ближайшего представимого значения. Если возникает связь, округляется до ближайшего чётного целого числа. Эквивалентно Designer™ фиксированной точки convergent функция.

Floor

Округляет положительные и отрицательные числа в сторону отрицательной бесконечности. Эквивалентно MATLAB floor функция.

Nearest

Округляет число до ближайшего представимого значения. Если возникает галстук, округляется до положительной бесконечности. Эквивалентно конструктору фиксированных точек nearest функция.

Round

Округляет число до ближайшего представимого значения. Если возникает связь, округляет положительные числа в сторону положительной бесконечности и округляет отрицательные числа в сторону отрицательной бесконечности. Эквивалентно конструктору фиксированных точек round функция.

Simplest

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

Zero

Округляет число до нуля. Эквивалентно MATLAB fix функция.

Дополнительные сведения см. в разделе Округление (конструктор фиксированных точек).

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

Программное использование

Параметр блока: RndMeth
Текст: символьный вектор
Значения: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
По умолчанию: 'Floor'

Укажите, будут ли переполнения насыщаться или переноситься.

ДействиеОбъяснениеВлияние на переполнениеПример

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

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

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

Максимальное значение, int8 (со знаком, 8-разрядное целое число) может представлять тип данных 127. Любой результат операции блока, превышающий это максимальное значение, вызывает переполнение 8-разрядного целого числа. Если флажок установлен, выходной сигнал блока насыщается на уровне 127. Аналогично, блочный выход насыщается при минимальном выходном значении -128.

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

Требуется оптимизировать эффективность созданного кода.

Необходимо избегать чрезмерного указания того, как блок обрабатывает сигналы вне диапазона. Дополнительные сведения см. в разделе Устранение ошибок диапазона сигналов.

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

Максимальное значение, int8 (со знаком, 8-разрядное целое число) может представлять тип данных 127. Любой результат операции блока, превышающий это максимальное значение, вызывает переполнение 8-разрядного целого числа. Если флажок снят, программное обеспечение интерпретирует значение, вызывающее переполнение, как int8, что может привести к непреднамеренному результату. Например, результат блока 130 (двоичный 1000 0010), выраженный как int8, составляет -126.

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

Программное использование

Параметр блока: SaturateOnIntegerOverflow
Текст: символьный вектор
Значения: 'off' | 'on'
По умолчанию: 'off'

Характеристики блока

Типы данных

Boolean | double | fixed point | half | integer | single

Прямой проход

yes

Многомерные сигналы

yes

Сигналы переменного размера

yes

Обнаружение пересечения нулей

no

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью Simulink ® Coder™

.

Создание кода ПЛК
Создание структурированного текстового кода с помощью Coder™ Simulink ® PLC

.

Преобразование с фиксированной точкой
Проектирование и моделирование систем с фиксированной точкой с помощью Designer™ с фиксированной точкой.

Представлен до R2006a