#include <stdio.h>
#include <math.h>
// 假设输入数组是float类型的
void nearest_interpolation(float **X, float **Y, float **V, int Xsize, int Ysize, int xi, int yi, float *result);
int main() {
// 示例输入数组
float X[] = {0.0, 1.0, 2.0, 3.0, 4.0};
float Y[] = {0.0, 1.0, 2.0, 3.0, 4.0};
float V[] = {1.0, 2.0, 3.0, 4.0, 5.0,
6.0, 7.0, 8.0, 9.0, 10.0,
11.0, 12.0, 13.0, 14.0, 15.0,
16.0, 17.0, 18.0, 19.0, 20.0,
21.0, 22.0, 23.0, 24.0, 25.0};
// 数组的维度
int Xsize = sizeof(X) / sizeof(X[0]);
int Ysize = sizeof(Y) / sizeof(Y[0]);
// 要插值的点
int xi = 2;
int yi = 2;
// 存储结果的变量
float result;
// 调用函数
nearest_interpolation(X, Y, V, Xsize, Ysize, xi, yi, &result);
printf("The interpolated result is: %f\n", result);
return 0;
}
// C语言实现的最近邻插值函数
void nearest_interpolation(float **X, float **Y, float **V, int Xsize, int Ysize, int xi, int yi, float *result) {
// 找到最接近xi的X坐标索引
int closestXIndex = (xi >= 0 && xi < Xsize) ? xi : (xi < 0 ? 0 : Xsize - 1);
// 找到最接近yi的Y坐标索引
int closestYIndex = (yi >= 0 && yi < Ysize) ? yi : (yi < 0 ? 0 : Ysize - 1);
// 计算最近邻点的值
*result = V[closestYIndex * Xsize + closestXIndex];
}
matlab中interp2,采用nearest模式,函数改成C语言函数
最新推荐文章于 2024-05-08 22:08:41 发布