Divide one input by another

Math Operations

The Product and Product of Elements blocks are variants of the Divide block.

For information on the Product block, see Product.

For information on the Product of Elements block, see Product of Elements.

The Divide block outputs the result of dividing its first input by its second. The inputs can be scalars, a scalar and a nonscalar, or two nonscalars that have the same dimensions. The Divide block is functionally a Product block that has two block parameter values preset:

**Multiplication:**`Element-wise(.*)`

**Number of Inputs:**`*/`

Setting non-default values for either of those parameters can change a Divide block to be functionally equivalent to a Product block or a Product of Elements block. See the documentation of those two blocks for more information.

If any of the Divide block inputs contains a `NaN`

or `inf`

value,
or if the block generates `NaN`

or `inf`

during
execution, you might see different results when you compare the block
simulation results with the generated code. This difference is due
to the nonfinite `NaN`

or `inf`

values.
In such cases, inspect your model configuration and eliminate the
conditions that produce `NaN`

or `inf`

.

The Simulink^{®}
Coder™ build process provides efficient code
for matrix inverse and division operations. The following summary
describes the benefits and when each benefit is available:

Benefit | Small
matrices (2-by-2 to 5-by-5) | Medium matrices (6-by-6 to 20-by-20) | Large matrices (larger than 20-by-20) |
---|---|---|---|

Faster code execution time, compared to R2011a and earlier releases | Yes | No | Yes |

Reduced ROM and RAM usage, compared to R2011a and earlier releases | Yes, for real values | Yes, for real values | Yes, for real values |

Reuse of variables | Yes | Yes | Yes |

Dead code elimination | Yes | Yes | Yes |

Constant folding | Yes | Yes | Yes |

Expression folding | Yes | Yes | Yes |

Consistency with MATLAB^{®}
Coder results | Yes | Yes | Yes |

For blocks that have three or more inputs of different dimensions, the code might include an extra buffer to store temporary variables for intermediate results.

Display the **Data Type Assistant**.

The **Data Type Assistant** helps you set the **Output
data type** parameter.

For more information, see Control Signal Data Types.

Control two properties of the block:

The number of input ports on the block

Whether each input is multiplied or divided into the output

**Default:** `*/`

`1`

or`*`

or`/`

Has one input. In element-wise mode, processes the input as described for the Product of Elements block. In matrix mode, if the parameter value is

`1`

or`*`

, the block outputs the input value. If the value is`/`

, the input must be a square matrix (including a scalar as a degenerate case) and the block outputs the matrix inverse. See Element-wise Mode and Matrix Mode for more information.**Integer value > 1**Has the number of inputs given by the integer value. The inputs are multiplied together in element-wise mode or matrix mode, as specified by the

**Multiplication**parameter. See Element-wise Mode and Matrix Mode for more information.**Unquoted string of two or more**`*`

and`/`

charactersHas the number of inputs given by the length of the character vector. Each input that corresponds to a

`*`

character is multiplied into the output. Each input that corresponds to a`/`

character is divided into the output. The operations occur in element-wise mode or matrix mode, as specified by the**Multiplication**parameter. See Element-wise Mode and Matrix Mode for more information.

Setting **Number of inputs** to `*`

and
selecting `Element-wise(.*)`

for **Multiplication** enables
the parameter **Multiply over**.

See Block-Specific Parameters for the command-line information.

Specify whether the Product block operates in Element-wise mode or Matrix mode.

**Default:** `Element-wise(.*)`

`Element-wise(.*)`

Operate in Element-wise mode.

`Matrix(*)`

Operate in Matrix mode.

Selecting `Element-wise(.*)`

and setting **Number
of inputs** to `*`

enable the following
parameter:

**Multiply over**

See Block-Specific Parameters for the command-line information.

Affect multiplication on matrix input.

**Default:** `All dimensions`

`All dimensions`

Output a scalar that is product of all elements of the matrix, or the product of their inverses, depending on the value of

**Number of inputs**.`Specified dimension`

Output a vector, the composition of which depends on the value of the

**Dimension**parameter.

Enable this parameter by selecting

`Element-wise(.*)`

for**Multiplication**and setting**Number of inputs**to`*`

or`1`

or`/`

.Setting this parameter to

`Specified dimension`

enables the**Dimension**parameter.

See Block-Specific Parameters for the command-line information.

Affect multiplication on matrix input.

**Default:** `1`

**Minimum:** `1`

**Maximum:** `2`

`1`

Output a vector that contains an element for each column of the input matrix.

`2`

Output a vector that contains an element for each row of the input matrix.

Each element of the output vector contains the product of all
elements in the corresponding column or row of the input matrix, or
the product of the inverses of those elements, depending on the value
of **Number of inputs**:

`1`

or`*`

Multiply the values of the column or row elements

`/`

Multiply the inverses of the column or row elements

Enable this parameter by selecting `Specified dimension`

for **Multiply
over**.

See Block-Specific Parameters for the command-line information.

This parameter is not visible in the block dialog box unless
it is explicitly set to a value other than `-1`

.
To learn more, see Blocks for Which Sample Time Is Not Recommended.

Require that all inputs have the same data type.

**Default:** Off

- On
Require that all inputs have the same data type.

- Off
Do not require that all inputs have the same data type.

See Block-Specific Parameters for the command-line information.

Select to lock the output data type setting of this block against changes by the Fixed-Point Tool and the Fixed-Point Advisor.

**Default:** Off

- On
Locks the output data type setting for this block.

- Off
Allows the Fixed-Point Tool and the Fixed-Point Advisor to change the output data type setting for this block.

Parameter: `LockScale` |

Type: character vector |

Value: `'off'` | `'on'` |

Default: `'off'` |

For more information, see Use Lock Output Data Type Setting (Fixed-Point Designer).

Specify the rounding mode for fixed-point operations.

**Default:** `Floor`

`Ceiling`

Rounds positive and negative numbers toward positive infinity. Equivalent to the MATLAB

`ceil`

function.`Convergent`

Rounds number to the nearest representable value. If a tie occurs, rounds to the nearest even integer. Equivalent to the Fixed-Point Designer™

`convergent`

function.`Floor`

Rounds positive and negative numbers toward negative infinity. Equivalent to the MATLAB

`floor`

function.`Nearest`

Rounds number to the nearest representable value. If a tie occurs, rounds toward positive infinity. Equivalent to the Fixed-Point Designer

`nearest`

function.`Round`

Rounds number to the nearest representable value. If a tie occurs, rounds positive numbers toward positive infinity and rounds negative numbers toward negative infinity. Equivalent to the Fixed-Point Designer

`round`

function.`Simplest`

Chooses between rounding toward floor and rounding toward zero to generate rounding code that is as efficient as possible.

`Zero`

Rounds number toward zero. Equivalent to the MATLAB

`fix`

function.

See Block-Specific Parameters for the command-line information.

For more information, see Rounding (Fixed-Point Designer).

Specify whether overflows saturate.

**Default:** Off

- On
Overflows saturate to either the minimum or maximum value that the data type can represent.

For example, an overflow associated with a signed 8-bit integer can saturate to -128 or 127.

- Off
Overflows wrap to the appropriate value that the data type can represent.

For example, the number 130 does not fit in a signed 8-bit integer and wraps to -126.

Consider selecting this check box when your model has a possible overflow and you want explicit saturation protection in the generated code.

Consider clearing this check box when you want to optimize efficiency of your generated code.

Clearing this check box also helps you to avoid overspecifying how a block handles out-of-range signals. For more information, see Check for Signal Range Errors.

When you select this check box, saturation applies to every internal operation on the block, not just the output or result.

In general, the code generation process can detect when overflow is not possible. In this case, the code generator does not produce saturation code.

Parameter: `SaturateOnIntegerOverflow` |

Type: character vector |

Value: `'off'` | `'on'` |

Default: `'off'` |

Lower value of the output range that Simulink checks.

**Default:** `[]`

(unspecified)

Specify this number as a finite, real, double, scalar value.

Simulink uses the minimum to perform:

Parameter range checking (see Specify Minimum and Maximum Values for Block Parameters) for some blocks.

Simulation range checking (see Signal Ranges and Enable Simulation Range Checking).

Automatic scaling of fixed-point data types.

Optimization of the code that you generate from the model. This optimization can remove algorithmic code and affect the results of some simulation modes such as SIL or external mode. For more information, see Optimize using the specified minimum and maximum values.

**Output minimum** does not saturate or clip
the actual output signal. Use the Saturation block
instead.

Parameter: `OutMin` |

Type: character vector |

Value: `'[ ]'` |

Default: `'[ ]'` |

Upper value of the output range that Simulink checks.

**Default:** `[]`

(unspecified)

Specify this number as a finite, real, double, scalar value.

Simulink uses the maximum value to perform:

Parameter range checking (see Specify Minimum and Maximum Values for Block Parameters) for some blocks.

Simulation range checking (see Signal Ranges and Enable Simulation Range Checking).

Automatic scaling of fixed-point data types.

Optimization of the code that you generate from the model. This optimization can remove algorithmic code and affect the results of some simulation modes such as SIL or external mode. For more information, see Optimize using the specified minimum and maximum values.

**Output maximum** does not saturate or clip
the actual output signal. Use the Saturation block
instead.

Parameter: `OutMax` |

Type: character vector |

Value: `'[ ]'` |

Default: `'[ ]'` |

Specify the output data type.

**Default:** ```
Inherit:
Inherit via internal rule
```

`Inherit: Inherit via internal rule`

Simulink chooses a data type to balance numerical accuracy, performance, and generated code size, while taking into account the properties of the embedded target hardware. If you change the embedded target settings, the data type selected by the internal rule might change. It is not always possible for the software to optimize code efficiency and numerical accuracy at the same time. If the internal rule doesn’t meet your specific needs for numerical accuracy or performance, use one of the following options:

Specify the output data type explicitly.

Use the simple choice of

`Inherit: Same as first input`

.Explicitly specify a default data type such as

`fixdt(1,32,16)`

and then use the Fixed-Point Tool to propose data types for your model. For more information, see`fxptdlg`

.To specify your own inheritance rule, use

`Inherit: Inherit via back propagation`

and then use a Data Type Propagation block. Examples of how to use this block are available in the Signal Attributes library Data Type Propagation Examples block.

`Inherit: Inherit via back propagation`

Use data type of the driving block.

`Inherit: Same as first input`

Use data type of the first input signal.

`double`

Output data type is

`double`

.`single`

Output data type is

`single`

.`int8`

Output data type is

`int8`

.`uint8`

Output data type is

`uint8`

.`int16`

Output data type is

`int16`

.`uint16`

Output data type is

`uint16`

.`int32`

Output data type is

`int32`

.`uint32`

Output data type is

`uint32`

.`fixdt(1,16,0)`

Output data type is fixed point

`fixdt(1,16,0)`

.`fixdt(1,16,2^0,0)`

Output data type is fixed point

`fixdt(1,16,2^0,0)`

.`<data type expression>`

Use a data type object, for example,

`Simulink.NumericType`

.

See Block-Specific Parameters for the command-line information.

For more information, see Control Signal Data Types.

Select the category of data to specify.

**Default:** `Inherit`

`Inherit`

Inheritance rules for data types. Selecting

`Inherit`

enables a second menu/text box to the right. Select one of the following choices:`Inherit via internal rule`

(default)`Inherit via back propagation`

`Same as first input`

`Built in`

Built-in data types. Selecting

`Built in`

enables a second menu/text box to the right. Select one of the following choices:`double`

(default)`single`

`int8`

`uint8`

`int16`

`uint16`

`int32`

`uint32`

`Fixed point`

Fixed-point data types.

`Expression`

Expressions that evaluate to data types. Selecting

`Expression`

enables a second menu/text box to the right, where you can enter the expression.

Clicking the **Show data type assistant** button
enables this parameter.

See Block-Specific Parameters for the command-line information.

Specify data type override mode for this signal.

**Default:** `Inherit`

`Inherit`

Inherits the data type override setting from its context, that is, from the block,

`Simulink.Signal`

object or Stateflow^{®}chart in Simulink that is using the signal.`Off`

Ignores the data type override setting of its context and uses the fixed-point data type specified for the signal.

The ability to turn off data type override for an individual data type provides greater control over the data types in your model when you apply data type override. For example, you can use this option to ensure that data types meet the requirements of downstream blocks regardless of the data type override setting.

This parameter appears only when the **Mode** is ```
Built
in
```

or `Fixed point`

.

Specify whether you want the fixed-point data as signed or unsigned.

**Default:** `Signed`

`Signed`

Specify the fixed-point data as signed.

`Unsigned`

Specify the fixed-point data as unsigned.

Selecting **Mode** > ```
Fixed
point
```

enables this parameter.

For more information, see Specifying a Fixed-Point Data Type.

Specify the bit size of the word that holds the quantized integer.

**Default:** `16`

**Minimum:** `0`

**Maximum:** `32`

Selecting **Mode** > ```
Fixed
point
```

enables this parameter.

For more information, see Specifying a Fixed-Point Data Type.

Specify the method for scaling your fixed-point data to avoid overflow conditions and minimize quantization errors.

**Default:** ```
Best
precision
```

`Binary point`

Specify binary point location.

`Slope and bias`

Enter slope and bias.

`Best precision`

Specify best-precision values.

Selecting **Mode** > ```
Fixed
point
```

enables this parameter.

Selecting `Binary point`

enables:

**Fraction length****Calculate Best-Precision Scaling**

Selecting `Slope and bias`

enables:

**Slope****Bias****Calculate Best-Precision Scaling**

For more information, see Specifying a Fixed-Point Data Type.

Specify fraction length for fixed-point data type.

**Default:** `0`

Binary points can be positive or negative integers.

Selecting **Scaling** > ```
Binary
point
```

enables this parameter.

For more information, see Specifying a Fixed-Point Data Type.

Specify slope for the fixed-point data type.

**Default:** `2^0`

Specify any positive real number.

Selecting **Scaling** > ```
Slope
and bias
```

enables this parameter.

For more information, see Specifying a Fixed-Point Data Type.

Specify bias for the fixed-point data type.

**Default:** `0`

Specify any real number.

Selecting **Scaling** > ```
Slope
and bias
```

enables this parameter.

For more information, see Specifying a Fixed-Point Data Type.

The following examples show the output of the Divide block for some typical inputs using default block parameter values.

Was this topic helpful?