MATLAB Function Reference |

Multidimensional data interpolation (table lookup)

**Syntax**

VI = interpn(X1,X2,X3,...,V,Y1,Y2,Y3,...) VI = interpn(V,Y1,Y2,Y3,...) VI = interpn(V,ntimes) VI = interpn(...,method)

**Description**

```
VI = interpn(X1,X2,X3,...,V,Y1,Y2,Y3,...)
```

interpolates to find `VI`

, the values of the underlying multidimensional function `V`

at the points in the arrays `Y1`

, `Y2`

, `Y3`

, etc. For an `N`

-D `V`

, `interpn`

is called with `2*N+1`

arguments. Arrays `X1`

, `X2`

, `X3`

, etc. specify the points at which the data `V`

is given. Out of range values are returned as `NaN`

s. `Y1`

, `Y2`

, `Y3`

, etc. must be arrays of the same size, or vectors. Vector arguments that are not the same size, and have mixed orientations (i.e. with both row and column vectors) are passed through `ndgrid`

to create the `Y1`

, `Y2`

, `Y3`

, etc. arrays. `interpn`

works for all N-D arrays with 2 or more dimensions.

```
VI = interpn(V,Y1,Y2,Y3,...)
```

interpolates as above, assuming `X1 = 1:size(V,1)`

, `X2 = 1:size(V,2)`

, `X3 = 1:size(V,3)`

, etc.

```
VI = interpn(V,ntimes)
```

expands `V`

by interleaving interpolates between each element, working recursively for `ntimes`

iterations. `interpn(V,1)`

is the same as `interpn(V)`

.

```
VI = interpn(...,method)
```

specifies alternative methods:

`'linear'` |
Linear interpolation (default) |

`'cubic'` |
Cubic interpolation |

`'spline'` |
Cubic spline interpolation |

`'nearest'` |
Nearest neighbor interpolation |

**Discussion**

All the interpolation methods require that `X1`

,`X2`

, and `X3`

be monotonic and have the same format ("plaid") as if they were created using `ndgrid`

. `X1`

,`X2`

,`X3`

,... and `Y1`

, `Y2`

, `Y3`

, etc. can be non-uniformly spaced. For faster interpolation when `X1`

, `X2`

, `X3`

, etc. are equally spaced and monotonic, use the methods '`*linear`

', '`*cubic`

', or '`*nearest`

'.

**See Also **

`interp1`

, `interp2`

, `interp3`

, `ndgrid`

interpft | interpstreamspeed |