# 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

NameLabelDescriptionData TypeValid Values

mo_table

table

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

Matrix of size Mx2

mo_timeScale

timeScale

Time scale of first table column

Scalar

mo_offset

offset

Offset of output signal y

Scalar

mo_startTime

startTime

Output y = offset for time < startTime

Scalar

mo_shiftTime

shiftTime

Shift time of first table column

Scalar

NameLabelDescriptionData TypeValid Values

mo_y

y

y

Structure

mo_y/fixed

fixed

Cell of scalars

true
false

mo_y/start

start

Cell of scalars

## Ports

NameTypeDescriptionIO TypeNumber

y

implicit

Connector of Real output signal

output

1