Documentation

### This is machine translation

Translated by
Mouseover text to see original. Click the button below to return to the English version of the page.

# fixpt_interp1

Implement 1-D lookup table

## Syntax

```y = fixpt_interp1(xdata,ydata,x,xdt,xscale,ydt,yscale,rndmeth) ```

## Description

`y = fixpt_interp1(xdata,ydata,x,xdt,xscale,ydt,yscale,rndmeth)` implements a one-dimensional lookup table to find output `y` for input `x`. If `x` falls between two `xdata` values (breakpoints), `y` is the result of interpolating between the corresponding `ydata` values. If `x` is greater than the maximum value in `xdata`, `y` is the maximum `ydata` value. If `x` is less than the minimum value in `xdata`, `y` is the minimum `ydata` value.

If the input data type `xdt` or the output data type `ydt` is floating point, `fixpt_interp1` performs the interpolation using floating-point calculations. Otherwise, `fixpt_interp1` uses integer-only calculations. These calculations handle the input scaling `xscale` and the output scaling `yscale` and obey the rounding method `rndmeth`.

## Input Arguments

`xdata`

Vector of breakpoints for the lookup table, such as `linspace(0,8,33)`.

`ydata`

Vector of table data that correspond to the breakpoints for the lookup table, such as `sin(xdata)`.

`x`

Vector of input values for the lookup table to process, such as `linspace(-1,9,201)`.

`xdt`

Data type of input `x`, such as `sfix(8)`.

`xscale`

Scaling for input `x`, such as `2^-3`.

`ydt`

Data type of output `y`, such as `sfix(16)`.

`yscale`

Scaling for output `y`, such as `2^-14`.

`rndmeth`

Rounding mode supported by fixed-point Simulink® blocks:

 `'Ceiling'` Round to the nearest representable number in the direction of positive infinity. `'Floor'` (default) Round to the nearest representable number in the direction of negative infinity. `'Nearest'` Round to the nearest representable number. `'Toward Zero'` Round to the nearest representable number in the direction of zero.

## Examples

Interpolate outputs for `x` using a 1-D lookup table that approximates the sine function:

```xdata = linspace(0,8,33).'; ydata = sin(xdata); % Define input x as a vector of 201 evenly % spaced points between -1 and 9 (includes % values both lower and higher than the range % of breakpoints in xdata) x = linspace(-1,9,201).'; % Interpolate output values for x y = fixpt_interp1(xdata,ydata,x,sfix(8),2^-3,sfix(16),... 2^-14,'Floor')```