Sample and Hold

The Sample and Hold block acquires the input at the signal port whenever it receives a trigger event at the trigger port (marked by ). The block then holds the output at the acquired input value until the next triggering event occurs.

Examples

Sample and Hold a Signal

Sample and Hold a Signal

Shows the effect of different trigger events on output of the Sample and Hold block.

Ports

Input

In — Signal port
scalar | vector | matrix

The signal port can accept data in the form of a scalar, vector, or matrix.

Dependencies

This port is named In when you select the Latch (buffer) input parameter.

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

Trigger — Trigger port
scalar

The trigger input must be a sample-based scalar with sample rate equal to the input frame rate at the signal port. You specify the trigger event using the Trigger type parameter.

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

Output

Port_1 — Sample and hold value
scalar | vector | matrix

Sample and hold output, returned as a scalar, vector, or a matrix. The block acquires input at the signal port whenever it receives a trigger event at the trigger port. The block then holds the acquired data until the next triggering event occurs.

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

Parameters

Trigger type — Type of trigger
Rising edge (default) | Falling edge | Either edge

The type of event that triggers the block to acquire the input signal:

Initial condition — Block output prior to first trigger event
0 (default) | scalar | vector | matrix

Specify the block's output before the first trigger event using the Initial condition parameter. When the acquired input is an M-by-N matrix, the Initial condition can be an M-by-N matrix or a scalar repeated across all elements of the matrix. When the input is a length-M unoriented vector, the Initial condition can be a length-M row or column vector, or a scalar to be repeated across all elements of the vector.

Latch (buffer) input — Latch buffer input
off (default) | on

If you select the Latch (buffer) input check box, the block outputs the value of the input from the previous time step until the next triggering event occurs. To use this block in a loop, select this check box.

Block Characteristics

Data Types

Boolean | double | fixed point | integer | single

Direct Feedthrough

Multidimensional Signals

Variable-Size Signals

Zero-Crossing Detection

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

HDL Code Generation
Generate VHDL, Verilog and SystemVerilog code for FPGA and ASIC designs using HDL Coder™.

HDL Coder™ provides additional configuration options that affect HDL implementation and synthesized logic.

HDL code for the Sample and Hold block is generated as a Triggered Subsystem . Similar restrictions apply to both blocks. See Using Triggered Subsystems for HDL Code Generation (HDL Coder) .

HDL Block Properties

For HDL block property descriptions, see HDL Block Properties: General (HDL Coder) .

Best Practices

When using the Sample and Hold block in models targeted for HDL code generation, consider the following:

Restrictions

The Sample and Hold block must meet the following conditions:

Version History

Introduced before R2006a