Using Lookup Tables in Equations
You can use the tablelookup
function in the equations
section of the Simscape™ file to interpolate input values based on a set of data points in a
one-dimensional, two-dimensional, three-dimensional, or four-dimensional table. This
functionality is similar to that of the Simulink® and Simscape Lookup Table blocks. It allows you to incorporate table-driven modeling directly
in your custom block, without the need of connecting an external Lookup Table block to your
model.
The following example implements mapping temperature to pressure using a one-dimensional lookup table.
component TtoP inputs u = {0,'K'}; % temperature end outputs y = {0,'Pa'}; % pressure end parameters xd = {[100 200 300 400] 'K'}; yd = {[1e5 2e5 3e5 4e5] 'Pa'}; end equations y == tablelookup(xd,yd,u,interpolation=linear,extrapolation=nearest); end end
xd
and yd
are declared as parameters with units. This
enables the block users to provide their own data sets when the component is converted to a
custom block, and also to select commensurate units from the drop-downs in the custom block
dialog box. The next illustration shows the dialog box of the custom block generated from this
component.
Note
To avoid repeating the same parameter declarations in each component that needs to use
them in its tablelookup
function, you can declare table data sets as
domain parameters and propagate them to components for interpolation purposes. For more
information, see Propagation of Domain Parameters.
The following rules apply to the one-dimensional arrays xd
and yd
:
The two arrays must be of the same size.
For smooth interpolation, each array must contain at least three values. For linear interpolation, two values are sufficient.
The
xd
values must be strictly monotonic, either increasing or decreasing.
The TtoP component uses linear interpolation for values within
the table range, but outputs the nearest value of yd
for
out-of-range input values. The following illustration shows a block
diagram, where the custom TtoP block is used with a linear input signal
changing from 0 to 1000, and the resulting output.
See the tablelookup
reference page for
syntax specifics and more examples.