# TimeTable

Generate a (possibly discontinuous) signal by linear interpolation in a table

## Library

Modelica/Blocks/Sources

## Description

This block generates an output signal by **linear interpolation** in
a table. The time points and function values are stored in a matrix
**table[i,j]**, where the first column table[:,1] contains the
time points and the second column contains the data to be interpolated.
The table interpolation has the following properties:

- The interpolation interval is found by a linear search where the interval used in the last call is used as start interval.
- The time points need to be
**monotonically increasing**. **Discontinuities**are allowed, by providing the same time point twice in the table.- Values
**outside**of the table range, are computed by**extrapolation**through the last or first two points of the table. - If the table has only
**one row**, no interpolation is performed and the function value is just returned independently of the actual time instant. - Via parameters
**shiftTime**and**offset**the curve defined by the table can be shifted both in time and in the ordinate value. The time instants stored in the table are therefore**relative**to**shiftTime**. - If time < startTime, no interpolation is performed and the offset is used as ordinate value for the output.
- If the table has more than one row, the first point in time
**always**has to be set to**0**, e.g.,**table=[1,1;2,2]**is**illegal**. If you want to shift the time table in time use the**shiftTime**parameter instead. - The table is implemented in a numerically sound way by
generating
**time events**at interval boundaries. This generates continuously differentiable values for the integrator. - Via parameter
**timeScale**the first column of the table array can be scaled, e.g., if the table array is given in hours (instead of seconds)**timeScale**shall be set to 3600.

Example:

table = [0, 0; 1, 0; 1, 1; 2, 4; 3, 9; 4, 16]; If, e.g., time = 1.0, the output y = 0.0 (before event), 1.0 (after event) e.g., time = 1.5, the output y = 2.5, e.g., time = 2.0, the output y = 4.0, e.g., time = 5.0, the output y = 23.0 (i.e., extrapolation).

## Parameters

Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|

| table | Table matrix (time = first column; e.g., table=[0, 0; 1, 1; 2, 4]) | Matrix of size Mx2 | |

| timeScale | Time scale of first table column | Scalar | |

| offset | Offset of output signal y | Scalar | |

| startTime | Output y = offset for time < startTime | Scalar | |

| shiftTime | Shift time of first table column | Scalar |

Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|

| y | y | Structure | |

| fixed | Cell of scalars | true | |

| start | Cell of scalars |

## Ports

Name | Type | Description | IO Type | Number |
---|---|---|---|---|

| implicit | Connector of Real output signal | output | 1 |