加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

老外写的用C实现Matlab中interp1的线性插值

(2013-03-06 21:45:43)
标签:

c

matlab

interp1

插值

分类: 2013年Le2I实习笔记
源代码:

void interp1(int *x, int x_tam, double *y, int *xx, int xx_tam, double *yy)

{
 double *dx, *dy, *slope, *intercept, *elementoMasProximo, *xD;
 
int i, *indiceEnVector;
 
dx
=(double *)calloc(x_tam-1,sizeof(double));
dy
=(double *)calloc(x_tam-1,sizeof(double));
slope
=(double *)calloc(x_tam-1,sizeof(double));
intercept
=(double *)calloc(x_tam-1,sizeof(double));
indiceEnVector
=(int *) malloc(sizeof(int));
elementoMasProximo
=(double *) malloc(sizeof(double));
xD
=(double *)calloc(x_tam,sizeof(double));

for(i=0;i<</span>x_tam;i++) { xD[i]=x[i]; }

for
(i = 0; i <</span> x_tam; i++)
{

if(i<</span>x_tam-1)
{

dx
[i] = x[i + 1] - x[i];
dy
[i] = y[i + 1] - y[i];
slope
[i] = dy[i] / dx[i];
intercept
[i] = y[i] - x[i] * slope[i];
}
else
{

dx
[i]=dx[i-1];
dy
[i]=dy[i-1];
slope
[i]=slope[i-1];
intercept
[i]=intercept[i-1];
}
}


for (i = 0; i <</span> xx_tam; i++)
{

encuentraValorMasProximo
(xx[i], xD, x_tam, x_tam, elementoMasProximo, indiceEnVector);
yy[i]=slope[*indiceEnVector] * xx[i] + intercept[*indiceEnVector];
}
}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有