首页 > 编程知识 正文

python插值算法,matlab调用python函数

时间:2023-05-06 19:49:12 阅读:16206 作者:454

正在将代码从Matlab转换为Python2.7,但在转换interp1函数时出现了问题。 我见过已经贴上的同样的问题,但是还没有解决。 问题是新生成的值(yn )的向量的第一个值不同,其馀的几乎相同。 使用不同的插值方法时,得到的值略有不同,但也是同样的问题。 我真的不知道现在为什么会这样。 有知道这件事或者看到我可能犯的错误的人吗? 谢谢你。 在

变量: x=[ 5.5,5.46678,5.408315,5.33929,5.261025,5.17605,

5.08684、4.995375、4.902755、4.80942、4.7157、4.621815、

4.52782、4.433715、4.339555、4.245395、4.151235、4.05713、

3.962915、3.868645、3.77432、3.680105、3.585945、3.491895、

3.397845、3.303905、3.21002、3.11619、3.02247、2.928805、

2.835195、2.741695、2.64836、2.55519、2.462295、2.36951、

2.27689、2.184435、2.092255、2.00035、1.908775、1.817475、

1.726505、1.63592、1.54583、1.4564、1.36752、1.279245、

1.19163、1.10539、1.02135、0.94006、0.86163、0.786115、

包括0.713515、0.64394、0.577555、0.514635、0.45562、0.400785,

包括0.35035、0.304425、0.26301、0.22627、0.193875、0.16544,

包括0.14058、0.118745、0.09944、0.082335、0.067265、0.05401,

包括0.042405、0.03234、0.023595、0.01628、0.010175、0.00528,

0.001485、-0.00121、-0.002805、-0.003355、-0.00275、-0.000935]

y=[0.19896、0.18722、0.155、0.13133、0.11168、0.09543,

包括0.0815、0.06556、0.04191、0.0117、0.00513、0.00123,

-0.0036、-0.00885、-0.01429、-0.01985、-0.02532、-0.03065,

-0.03574、-0.04082、-0.04594、-0.05104、-0.05596、-0.06091,

-0.06561、-0.07023、-0.07482、-0.07913、-0.08341、-0.08749,

-0.09155、-0.09551、-0.09952、-0.10334、-0.10694、-0.11011,

-0.11319、-0.11587、-0.11856、-0.12092、-0.12277、-0.12428、

-0.12506、-0.12567、-0.12567、-0.12497、-0.12369、-0.12135、

-0.11944、-0.1191、-0.11983、-0.11819、-0.11197、-0.10004、

-0.08016、-0.05285、-0.01569、0.03055、0.08527、0.1492,

0.21971、0.29507、0.37453、0.45682、0.53766、0.61562,

包括0.6916、0.763、0.82907、0.88665、0.9367、0.97418,

包括0.99617、0.99807、0.97457、0.91708、0.81796、0.66987,

0.46359,0.19778,-0.13378,-0.54232,-1.0126,-1.5297 ]

xn=[ 0.0.6111111,1.2222222,1.83333333,2.44444444,

3.05555556、3.666666667、4.27777778、4.8888889和5.5]

Matlab代码:

^{pr2}$

Python代码: from scipy.interpolateimportinterpolatedunivariatespline

yn _ f1=interpolatedunivariatespline (x [ :3360-1 ],y[:-1] )。

yn_py1=yn_F1(xn ) )

from scipy.interpolateimportinterp 1d

yn_F2=interp1d(x[:3360-1],y[:-1] )

yn_py2=yn_F2(xn ) )

import numpy as np

yn_py3=NP.interp(xn,x[:-1],y[:-1] ) ) ) ) ) ) ) ) )。

结果: yn_mat=[-0.7596、-0.0345、-0.1201、-0.1240、-0.1075、

-0.0819、-0.0517、- 0.0179、0.0374、0.1990 ]

yn_py1=[-0.23310355,-0.03594415,-0.11996893,-0.12406894,-0.10757466,

-0.08191329,-0.05174936,- 0.01793778,0.0371338,0.19896 ]

yn_py2=[ 0.31712327,-0.03447354,-0.12010691,-0.12401772,-0.10754986,

-0.08189905,-0.05174217,- 0.01793785,0.03742192,0.19896 ]

yn_py3=[ 0.31712327,-0.03447354,-0.12010691,-0.12401772,-0.10754986,

-0.08189905,-0.05174217,- 0.01793785,0.03742192,0.19896 ]

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。