# Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English verison of the page.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

# Maximum

Find maximum values in input or sequence of inputs

## Library

Statistics

`dspstat3`

## Description

The Maximum block identifies the value and/or position of the largest element in each row or column of the input, along vectors of a specified dimension of the input, or of the entire input. The Maximum block can also track the maximum values in a sequence of inputs over a period of time. The Mode parameter specifies the block's mode of operation and can be set to `Value`, `Index`, ```Value and Index```, or `Running`.

The Maximum block supports real and complex floating-point, fixed-point, and Boolean inputs. Real fixed-point inputs can be either signed or unsigned, while complex fixed-point inputs must be signed. The data type of the maximum values output by the block match the data type of the input. The index values output by the block are `double` when the input is `double`, and `uint32` otherwise.

For the `Value`, `Index`, and `Value and Index` modes, the Maximum block produces identical results as the MATLAB® `max` function when it is called as `[y I] = max(u,[],D)`, where u and y are the input and output, respectively, D is the dimension, and I is the index.

### Value Mode

When the Mode parameter is set to `Value`, the block computes the maximum value in each row or column of the input, along vectors of a specified dimension of the input, or of the entire input at each sample time, and outputs the array y. Each element in y is the maximum value in the corresponding column, row, vector, or entire input. The output y depends on the setting of the Find the maximum value over parameter. For example, consider a 3-dimensional input signal of size M-by-N-by-P:

• `Each row` — The output at each sample time consists of an M-by-1-by-P array, where each element contains the maximum value of each vector over the second dimension of the input. For an input that is an M-by-N matrix, the output at each sample time is an M-by-1 column vector.

• `Each column` — The output at each sample time consists of a 1-by-N-by-P array, where each element contains the maximum value of each vector over the first dimension of the input. For an input that is an M-by-N matrix, the output at each sample time is a 1-by-N row vector.

In this mode, the block treats length-M unoriented vector inputs as M-by-1 column vectors.

• `Entire input` — The output at each sample time is a scalar that contains the maximum value in the M-by-N-by-P input matrix.

• `Specified dimension` — The output at each sample time depends on Dimension. If Dimension is set to `1`, the output is the same as that when you select `Each column`. If Dimension is set to `2`, the output is the same as when you select `Each row`. If Dimension is set to `3`, the output at each sample time is an M-by-N matrix containing the maximum value of each vector over the third dimension of the input.

For complex inputs, the block selects the value in each row or column of the input, along vectors of a specified dimension of the input, or of the entire input that has the maximum magnitude squared as shown below. For complex value $u=a+bi$, the magnitude squared is ${a}^{2}+{b}^{2}$.

### Index Mode

When Mode is set to `Index`, the block computes the maximum value in each row or column of the input, along vectors of a specified dimension of the input, or of the entire input, and outputs the index array I. Each element in I is an integer indexing the maximum value in the corresponding column, row, vector, or entire input. The output I depends on the setting of the Find the maximum value over parameter. For example, consider a 3-dimensional input signal of size M-by-N-by-P:

• `Each row` — The output at each sample time consists of an M-by-1-by-P array, where each element contains the index of the maximum value of each vector over the second dimension of the input. For an input that is an M-by-N matrix, the output at each sample time is an M-by-1 column vector.

• `Each column` — The output at each sample time consists of a 1-by-N-by-P array, where each element contains the index of the maximum value of each vector over the first dimension of the input. For an input that is an M-by-N matrix, the output at each sample time is a 1-by-N row vector.

In this mode, the block treats length-M unoriented vector inputs as M-by-1 column vectors.

• `Entire input` — The output at each sample time is a 1-by-3 vector that contains the location of the maximum value in the M-by-N-by-P input matrix. For an input that is an M-by-N matrix, the output will be a 1-by-2 vector.

• `Specified dimension` — The output at each sample time depends on Dimension. If Dimension is set to 1, the output is the same as when you select `Each column`. If Dimension is set to 2, the output is the same as when you select ```Each row```. If Dimension is set to 3, the output at each sample time is an M-by-N matrix containing the indices of the maximum values of each vector over the third dimension of the input.

When a maximum value occurs more than once, the computed index corresponds to the first occurrence. For example, when the input is the column vector `[3 2 1 2 3]'`, the computed one-based index of the maximum value is `1` rather than `5` when ```Each column``` is selected.

When inputs to the block are double-precision values, the index values are double-precision values. Otherwise, the index values are 32-bit unsigned integer values.

### Value and Index Mode

When Mode is set to ```Value and Index```, the block outputs both the maxima and the indices.

### Running Mode

When Mode is set to `Running`, the block tracks the maximum value of each channel in a time sequence of M-by-N inputs. In this mode, you must also specify a value for the Input processing parameter:

• When you select ```Elements as channels (sample based)```, the block outputs an M-by-N array. Each element yij of the output contains the maximum value observed in element uij for all inputs since the last reset.

• When you select ```Columns as channels (frame based)```, the block outputs an M-by-N matrix. Each element yij of the output contains the maximum value observed in the jth column of all inputs since the last reset, up to and including element uij of the current input.

#### Running Mode for Variable-Size Inputs

When your inputs are of variable size, and you set the Mode to `Running` , there are two options:

• If you set the Input processing parameter to `Elements as channels (sample based)`, the state is reset.

• If you set the Input processing parameter to `Columns as channels (frame based)`, then there are two cases:

• When the input size difference is in the number of channels (i.e., number of columns), the state is reset.

• When the input size difference is in the length of channels (i.e., number of rows), there is no reset and the running operation is carried out as usual.

### Resetting the Running Maximum

The block resets the running maximum whenever a reset event is detected at the optional Rst port. The reset sample time must be a positive integer multiple of the input sample time.

When a reset event occurs while the Input processing parameter is set to `Elements as channels (sample based)`, the running maximum for each channel is initialized to the value in the corresponding channel of the current input. Similarly, when the Input processing parameter is set to ```Columns as channels (frame based)```, the running maximum for each channel is initialized to the earliest value in each channel of the current input.

You specify the reset event in the Reset port menu:

• `None` — Disables the Rst port.

• `Rising edge` — Triggers a reset operation when the Rst input does one of the following:

• Rises from a negative value to a positive value or zero

• Rises from zero to a positive value, where the rise is not a continuation of a rise from a negative value to zero (see the following figure)

• `Falling edge` — Triggers a reset operation when the `Rst` input does one of the following:

• Falls from a positive value to a negative value or zero

• Falls from zero to a negative value, where the fall is not a continuation of a fall from a positive value to zero (see the following figure)

• `Either edge` — Triggers a reset operation when the `Rst` input is a ```Rising edge``` or `Falling edge` (as described above)

• `Non-zero sample` — Triggers a reset operation at each sample time that the `Rst` input is not zero

 Note:   When running simulations in the Simulink® `MultiTasking` mode, reset signals have a one-sample latency. Therefore, when the block detects a reset event, there is a one-sample delay at the reset port rate before the block applies the reset. For more information on latency and the Simulink tasking modes, see Excess Algorithmic Delay (Tasking Latency) and Time-Based Scheduling and Code Generation in the Simulink Coder™ documentation.

### Fixed-Point Data Types

The parameters on the Data Types pane of the block dialog are only used for complex fixed-point inputs. The sum of the squares of the real and imaginary parts of such an input are formed before a comparison is made, as described in Value Mode. The results of the squares of the real and imaginary parts are placed into the product output data type. The result of the sum of the squares is placed into the accumulator data type. These parameters are ignored for other types of inputs.

## Examples

In the following ex_maximum_ref model, the Maximum block calculates the running maximum of a 3-by-2 matrix input, `dsp_examples_u`. The Input processing parameter is set to `Columns as channels (frame based)`, so the block processes the input as a two channel signal with a frame size of three. The running maximum is reset at t=2 by an impulse to the block's Rst port.

The operation of the block is shown in the following figure.

## Dialog Box

The Main pane of the Maximum block dialog appears as follows.

Mode

Specify the block's mode of operation:

• `Value` — Output the maximum value of each input

• `Index` — Output the index of the maximum value

• `Value and index` — Output both the value and the index

• `Running` — Track the maximum value of the input sequence over time

Input processing

Specify how the block should process the input when computing the running maximum. You can set this parameter to one of the following options:

• `Columns as channels (frame based)` — When you select this option, the block treats each column of the input as a separate channel.

• `Elements as channels (sample based)` — When you select this option, the block treats each element of the input as a separate channel.

This parameter appears only when you set the Mode to `Running`.

 Note:   The option ```Inherit from input (this choice will be removed - see release notes)``` will be removed in a future release. See Frame-Based Processing in the DSP System Toolbox™ Release Notes for more information.
Index base

Specify whether the index of the maximum value is reported using one-based or zero-based numbering. This parameter is only visible when the Mode parameter is set to `Index` or ```Value and index```.

Find the maximum value over

Specify whether to find the maximum value along rows, columns, entire input, or the dimension specified in the Dimension parameter. For more information, see Description.

Reset port

Specify the reset event that causes the block to reset the running maximum. The sample time of the input to the Rst port must be a positive integer multiple of the input sample time. This parameter appears only when you set the Mode parameter to `Running`. For information about the possible values of this parameter, see Resetting the Running Maximum.

Dimension

Specify the dimension (one-based value) of the input signal, over which the maximum is computed. The value of this parameter cannot exceed the number of dimensions in the input signal. This parameter is only visible when the Find the maximum value over parameter is set to `Specified dimension`.

The Data Types pane of the Maximum block dialog appears as follows.

 Note:   The parameters on the Data Types pane are only used for complex fixed-point inputs. The sum of the squares of the real and imaginary parts of such an input are formed before a comparison is made, as described in Value Mode. The results of the squares of the real and imaginary parts are placed into the product output data type. The result of the sum of the squares is placed into the accumulator data type. These parameters are ignored for other types of inputs.
Rounding mode

Select the rounding mode for fixed-point operations.

Saturate on integer overflow

When you select this check box, the block saturates the result of its fixed-point operation. When you clear this check box, the block wraps the result of its fixed-point operation. By default, this check box is cleared. For details on `saturate` and `wrap`, see overflow mode for fixed-point operations.

Product output data type

Specify the product output data type. See Fixed-Point Data Types and Multiplication Data Types for illustrations depicting the use of the product output data type in this block. You can set it to:

• A rule that inherits a data type, for example, ```Inherit: Same as input```

• An expression that evaluates to a valid data type, for example, `fixdt([],16,0)`

Click the Show data type assistant button to display the Data Type Assistant, which helps you set the Product output data type parameter.

See Specify Data Types Using Data Type Assistant for more information.

Accumulator data type

Specify the accumulator data type. See Fixed-Point Data Types for illustrations depicting the use of the accumulator data type in this block. You can set this parameter to:

• A rule that inherits a data type, for example, ```Inherit: Same as product output```

• An expression that evaluates to a valid data type, for example, `fixdt([],16,0)`

Click the Show data type assistant button to display the Data Type Assistant, which helps you set the Accumulator data type parameter.

See Specify Data Types Using Data Type Assistant for more information.

Lock data type settings against changes by the fixed-point tools

Select this parameter to prevent the fixed-point tools from overriding the data types you specify on the block mask.

## HDL Code Generation

This block supports HDL code generation using HDL Coder™. HDL Coder provides additional configuration options that affect HDL implementation and synthesized logic. For more information on implementations, properties, and restrictions for HDL code generation, see Maximum.

## Supported Data Types

PortSupported Data Types

Input

• Double-precision floating point

• Single-precision floating point

• Fixed point (signed and unsigned)

• Boolean

• 8-, 16-, and 32-bit signed integers

• 8-, 16-, and 32-bit unsigned integers

Reset

• Double-precision floating point

• Single-precision floating point

• Boolean

• 8-, 16-, and 32-bit signed integers

• 8-, 16-, and 32-bit unsigned integers

Idx

• Double-precision floating point

• 32-bit unsigned integers

Val

• Double-precision floating point

• Single-precision floating point

• Fixed point (signed and unsigned)

• Boolean

• 8-, 16-, and 32-bit signed integers

• 8-, 16-, and 32-bit unsigned integers

 Mean DSP System Toolbox Minimum DSP System Toolbox MinMax Simulink `max` MATLAB `dsp.Maximum` DSP System Toolbox