---
title: kml_float_interp2d_eval_extrap
description: "这个函数返回给定点(x, y)的插值结果z。计算中使用插值对象interp，数据数组xarr，yarr和zarr以及加速器xacc和yacc。函数不检查最大值最小值越界，因此当x在xarr的区间外或y在yarr的区间外时，外推法被使用。"
url: https://www.hikunpeng.com/document/detail/zh/hpchistory/hpckit/develop2400/kunpengaccel_kml_0509.html
sourcePath: /source/zh/hpchistory/hpckit/develop2400/kunpengaccel_kml_0509.html
indexId: a62626e2d94c02ac1836c2e5f4fef6c9a195034b42c89f06a8b74d57d9f5325567
---
# kml_float_interp2d_eval_extrap

这个函数返回给定点(x, y)的插值结果z。计算中使用插值对象interp，数据数组xarr，yarr和zarr以及加速器xacc和yacc。函数不检查最大值最小值越界，因此当x在xarr的区间外或y在yarr的区间外时，外推法被使用。

#### 接口定义

float kml_float_interp2d_eval_extrap(const kml_float_interp2d *interp, const float xarr[], const float yarr[], const float zarr[], const float x, const float y, kml_interp_accel *xa, kml_interp_accel *ya)

int kml_float_interp2d_eval_extrap_e(const kml_float_interp2d *interp, const float xarr[], const float yarr[], const float zarr[], const float x, const float y, kml_interp_accel *xa, kml_interp_accel *ya, float *z)


#### 参数

| 参数名 | 类型 | 描述 | 输入/输出 |
| --- | --- | --- | --- |
| interp | kml\_float\_interp2d\* | 插值对象指针 | 输入 |
| xarr | float | 存有x值的数组 | 输入 |
| yarr | float | 存有y值的数组 | 输入 |
| zarr | float | 存有z值的数组 | 输入 |
| x | float | 求解点x的值 | 输入 |
| y | float | 求解点y的值 | 输入 |
| xa | kml\_interp\_accel \* | 加速器对象指针 | 输入 |
| ya | kml\_interp\_accel \* | 加速器对象指针 | 输入 |
| z | float \* | 插值点计算结果 | 输出 |


#### 依赖

#include "kml_interp2d.h"


#### 示例

```
const size_t xMin = 4;
const size_t xMax = 2048;
const size_t xSize = 4;
const size_t yMin = 4;
const size_t yMax = 2048;
const size_t ySize = 4;
const float xValLo = 1;
const float xValHi = 2;
const float yValLo = 1;
const float yValHi = 2;
float xArr[4] = {1,1.33,1.67,2};
float yArr[4] = {1,1.33,1.67,2};
float* zArr = (float*)malloc(xSize * ySize * sizeof(float));
float x = 1;
float y = 1;
float z = 0;
kml_float_interp2d *interp = kml_float_interp2d_alloc(kml_float_interp2d_bicubic, xSize, ySize);
kml_interp_accel *xacc = kml_interp_accel_alloc();
kml_interp_accel *yacc = kml_interp_accel_alloc();
kml_float_interp2d_init(interp, xArr, yArr, zArr, xSize, ySize);
z = kml_float_interp2d_eval_extrap(interp, xArr, yArr, zArr, x, y, xacc, yacc);
```
