TimeTable
Generate a (possibly discontinuous) signal by linear interpolation in a table
Library
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 |
---|---|---|---|---|
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 |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_y | y | y | Structure | |
mo_y/fixed | fixed | Cell of scalars | true | |
mo_y/start | start | Cell of scalars |
Ports
Name | Type | Description | IO Type | Number |
---|---|---|---|---|
y | implicit | Connector of Real output signal | output | 1 |