• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: C/C++
  • 标签: 三维插值  c语言  

资源简介

c语言 三维线性插值 简单明了,与matlab对比一致 。。。。。。。。。。。。

资源截图

代码片段和文件信息

#include 
//X的数量
int n_x=2;
//Y的数量
int n_y=2;
//Z的数量
int n_z=2;
//自变量左侧下标
int Lindex;
//自变量右侧下标
int Rindex;
//x的值
double m_x[2]={12};
//y的值
double m_y[2]={12};
//Z的值
double m_z[2]={12};
//V的值
double m_data[8]={ 2 6 4 8 3 7 5 9 };

//插值函数,xyz待插点,输出V
double interp3(double xdouble ydouble z);
//获取V的值,根据3维下标
double getV(int xiint yiint zi);
//获取待插点变量所处的左右邻近位置下标
void getRangeIndex(double valdouble data[]int n);
//获取在范围内所处位置的权重
double getWeight(double val1double val2double val);
//将两个三维点,转成1个二维点,输入为两个三维点下标和降维的权重
double get4Q(int xi1int yi1int zi1int xi2int yi2int zi2double weight);



int main()
{
double x=1;
double y=2;
double z=2;

double v=interp3(xyz);
printf(“IN x:%f y:%f z:%fthe V is %f\r\n“xyzv);
return 0;
}

double interp3(double xdouble ydouble z)
{
int x_f_index[2];
int y_f_index[2];
int z_f_index[2];

double xdydzd;

double i1i2j1j2;

double w1w2;

getRangeIndex(xm_xn_x);
x_f_index[0]=Lindex;
x_f_index[1]=Rindex;

getRangeIndex(ym_yn_y);
y_f_index[0]=Lindex;
y_f_index[1]=Rindex;

getRangeIndex(zm_zn_z);
z_f_index[0]=Lindex;
z_f_index[1]=Rindex;

xd=getWeight(m_x[x_f_index[0]]m_x[x_f_index[1]]x

评论

共有 条评论