# Discrete Derivative

Compute discrete-time derivative

Libraries:

## Description

The Discrete Derivative block computes an optionally scaled discrete time derivative as follows

`$y\left({t}_{n}\right)=K\left(\frac{u\left({t}_{n}\right)-u\left({t}_{n-1}\right)}{{T}_{s}}\right)$`

where

• $u\left({t}_{n}\right)$ and $y\left({t}_{n}\right)$ are the block input and output at the current time step, respectively.

• $u\left({t}_{n-1}\right)$ is the block input at the previous time step.

• $K$ is an optional scaling factor, specified using the Gain value parameter.

• ${T}_{s}$ is the simulation's discrete step size, which must be fixed.

Note

Do not use this block in subsystems with a nonperiodic trigger, for example, nonperiodic function-call subsystems. This configuration produces inaccurate results.

## Examples

expand all

This example shows how to use the Discrete Derivative block to compute the discrete-time derivative of a floating-point input signal. The unfiltered discrete-time derivative is compared to a filtered discrete-time derivative that is computed by the Discrete Filter block.

## Ports

### Input

expand all

Input signal, specified as a scalar, vector, or matrix.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `fixed point`

### Output

expand all

Optionally scaled discrete-time derivative, specified as a scalar, vector, or matrix. For more information on how the block computes the discrete-time derivative, see Description. You specify the data type of the output signal with the Output data type parameter.

Data Types: `single` | `double` | `int8` | `int16` | `int32` | `int64` | `uint8` | `uint16` | `uint32` | `uint64` | `fixed point`

## Parameters

expand all

### Main

Scaling factor applied to the computed derivative, specified as a real scalar value.

#### Programmatic Use

 Block Parameter: `gainval` Type: character vector Values: scalar Default: `'1.0'`

Initial condition for the previous scaled input, specified as a scalar.

#### Programmatic Use

 Block Parameter: `ICPrevScaledInput` Type: character vector Values: scalar Default: `'0.0'`

Specify whether the block performs sample- or frame-based processing:

• `Columns as channels (frame based)` — Treat each column of the input as a separate channel (frame-based processing).

Note

Frame-based processing requires a DSP System Toolbox™ license.

• `Elements as channels (sample based)` — Treat each element of the input as a separate channel (sample-based processing).

Use Input processing to specify whether the block performs sample- or frame-based processing. For more information about these two processing modes, see Sample- and Frame-Based Concepts (DSP System Toolbox).

#### Programmatic Use

 Block Parameter: `InputProcessing` Type: character vector Values: ```'Columns as channels (frame based)'``` | ```'Elements as channels (sample based)'``` Default: ```'Elements as channels (sample based)'```

### Signal Attributes

Lower value of the output range that the software checks.

The software uses the minimum to perform:

#### Tips

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

#### Programmatic Use

To set the block parameter value programmatically, use the `set_param` function.

 Parameter: `OutMin` Values: `'[]'` (default) | scalar in quotes

Upper value of the output range that the software checks.

The software uses the maximum value to perform:

#### Tips

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

#### Programmatic Use

To set the block parameter value programmatically, use the `set_param` function.

 Parameter: `OutMax` Values: `'[]'` (default) | scalar in quotes

Specify the output data type. You can set it to:

• A rule that inherits a data type, for example, ```Inherit: Inherit via back propagation```

• The name of a built-in data type, for example, `single`

• The name of a data type object, for example, a `Simulink.NumericType` object

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

The Data Type Assistant helps you set data attributes. To use the Data Type Assistant, click . For more information, see Specify Data Types Using Data Type Assistant.

#### Programmatic Use

 Block Parameter: `OutDataTypeStr` Type: character vector Values: ```'Inherit: Inherit via internal rule' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'``` Default: `'Inherit: Inherit via internal rule'`

Select this parameter to prevent the fixed-point tools from overriding the Output data type you specify on the block. For more information, see Use Lock Output Data Type Setting (Fixed-Point Designer).

#### Programmatic Use

To set the block parameter value programmatically, use the `set_param` function.

 Parameter: `LockScale` Values: `'off'` (default) | `'on'`

Specify the rounding mode for fixed-point operations. For more information, see Rounding Modes (Fixed-Point Designer).

Block parameters always round to the nearest representable value. To control the rounding of a block parameter, enter an expression using a MATLAB® rounding function into the mask field.

#### Programmatic Use

To set the block parameter value programmatically, use the `set_param` function.

 Parameter: `RndMeth` Values: `'Floor'` (default) | `'Ceiling'` | `'Convergent'` | `'Nearest'` | `'Round'` | `'Simplest'` | `'Zero'`

When you select this check box, overflows saturate to the maximum or minimum value that the data type can represent. Otherwise, overflows wrap.

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.

#### Programmatic Use

 Block Parameter: `DoSatur` Type: character vector Values: `'off' | 'on'` Default: `'off'`

## Block Characteristics

 Data Types `double` | `fixed point` | `integer` | `single` Direct Feedthrough `yes` Multidimensional Signals `no` Variable-Size Signals `yes` Zero-Crossing Detection `no`

## Version History

Introduced before R2006a