matlab插值程序

matlab插值程序,第1张

a=[3.946 05.193 505.762 1006.311 1506.795 2007.257 2507.704 3008.170 350...

8.603 4009.073 4509.511 50010.001 55010.435 60010.932 65011.400 700...

11.938 75012.428 80012.995 85013.560 90014.246 95015.063 1000]

x=a(:,2)

y=a(:,1)

x2=1:60:1200

y2=interp1(x,y,x2, 'pchip')

plot(x,y,'bo',x2,y2,'r*')

legend('千分尺数据','分段核告插值数据'樱氏睁,'Location', 'Best')

grid on

xlabel('x 容量值(L)'),ylabel('y 电流值(mA)'脊岁)

问题补充,因字数限制,挪到这

1.拉格朗日插值简介:

对给定的n个插值节点x1,x2,…,xn,及其对应的函数值y1=f(x1), y2=f(x2),…, yn=f(xn)使用拉格朗日插值公式,计算在x点处的戚碧对应的函数值f(x)

2.一维拉格朗日插值c语言程序:

Int lagrange(x0, y0, n, x, y)

Float xo[], yo[], x

Int n

Float *y

{

Int i, j

Float p

*y=0

If (n>1)

{

For(i=0i<ni++)

{

P=1

For(j=1j<nj++)

{

If(i!=J)

P=p*(x-x0[j]/x0[i]-x0[j])

}

*y=*y+p*y0[i]

Return(0)

}

Else

Return(-1)

}

3.例题。已知函数如下表所示,求x=0.472处的函数值:

X 0.46 0.47 0.480.49

Y 0.484655 0.4903745 0.502750 0.511668

计算这个问题的c语言程序如下:

#minclude stdio

#includeM<nath.h>

Main()

{

Float x0[4]={ 0.46, 0.47,0.48,0.49}

Float y0[4]={ 0.484655 ,0.4903745 ,0.502750 ,0.511668}

Float x, y

Int n, rtn

N=4

X=0.472

Rth=lagrange(x0,y0,n,x,&y)

If(rtn=0)

{

Prinf(“Y(0.472)=:%f\n”,y)

}

Else

{

Prinf(“n must be larger than 1.\n”)

}

}

计算结果:Y(0.472)=:0.495553

4.问题补充

我的问题与上高拆举面的例子类似,计算三维空间一点(x,y,z)对应的函数值(Vx,Vy,Vz).不同的是自变量(point_coordinate.txt)为三维空间散乱点(不是正方体的顶点),因变量(point_data.txt)为矢量(向量 )。插值算法比较多,常数法,拉格朗日插值,埃特金插值,三阶样条插值等。最简单的就是常数法,查找离目标点(x,y,z)距离最近的已知自变量(Xi,Yi,Zi),把该点的函数值赋给目标点做函数值,求高手帮御尘忙写写。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12518880.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存