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

Wolfram Language



This information is part of the Modelica Standard Library maintained by the Modelica Association.

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.


   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 (5)


Value: 0

Type: Real

Description: Offset of output signal y


Value: 0

Type: Time (s)

Description: Output y = offset for time < startTime


Value: fill(0.0, 0, 2)

Type: Real[:,2]

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


Value: 1

Type: Time (s)

Description: Time scale of first table column


Value: startTime

Type: Time (s)

Description: Shift time of first table column

Connectors (1)


Type: RealOutput

Description: Connector of Real output signal

Used in Examples (3)



Demonstrates the usage of blocks from Modelica.Blocks.Interaction.Show



Complete drum boiler model, including evaporator and supplementary components



Tank with one time-varying top inlet mass flow rate and a bottom outlet into the ambient


Release Notes

  • Oct. 21, 2002 by Christian Schweiger:
    Corrected interface from
        parameter Real table[:, :]=[0, 0; 1, 1; 2, 4];
        parameter Real table[:, 2]=[0, 0; 1, 1; 2, 4];
  • Nov. 7, 1999 by Martin Otter: