• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C语言实现matlab的interp2函数

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 

/********一维差值函数*******/

double inter_linear(double x0, double x1, double y0, double y1, double x)
{
double a0, a1, y;
a0 = (x - x1) / (x0 - x1);
a1 = (x - x0) / (x1 - x0);
y = a0*y0 + a1*y1;

return (y);
}
/****************************/

/*****二维插值函数*****/
double interp2(double *x, double *y, double z[][500], int m, int n, double a, double b) //一维数组x、y。二维数组z,500可换。mn为向量大小。ab为插值点位置
{
int i, j, tmpi, tmpj;
double w, w1, w2;
tmpi = 0;
tmpj = 0;
w = 0.0;
for (i = 0; i<m; i++) //确定a在x轴的位置
{
if ((a <= x[i]) && (a>x[i + 1])) //
{
tmpi = i;
break;
}
if( (a>=x[i])&&(a<x[i+1]) ) //
{
tmpi = i;
break;
}
}
for (j = 0; j<n; j++) //确定b在y轴的位置
{
if ((b >= y[j]) && (b<y[j + 1]))
{
tmpj = j;
break;
}
}
/********x方向进行插值*****************/
if (x[tmpi] == a)
{
//
w1 = z[tmpi][tmpj];
w2 = z[tmpi][tmpj + 1];
/**********/
if (y[tmpj] == b)
{
//
w = w1;
}
else
{
//
w = inter_linear(y[tmpj], y[tmpj + 1], w1, w2, b);
}
}
else
{
//
w1 = inter_linear(x[tmpi], x[tmpi + 1], z[tmpi][tmpj], z[tmpi + 1][tmpj], a);
w2 = inter_linear(x[tmpi], x[tmpi + 1], z[tmpi][tmpj + 1], z[tmpi + 1][tmpj + 1], a);
if (y[tmpj] == b)
{
//
w = w1;
}
else
{
//
w = inter_linear(y[tmpj], y[tmpj + 1], w1, w2, b);
}
}
return (w);
}
/****************************/


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap