我正在尝试在GEKKO中执行2D插值,并拥有x,y和z数据。但是,当我将它们输入 bspline 函数时,出现错误"x_data 和y_data必须严格增加"。如何计算节点和系数以定义表面?
我尝试使用 scipy 的插值函数在 x 和 y 数据与 z 数据之间为扁平网格创建数据,并排序,以便 x 增加和 y 循环通过增加的值,但这仍然导致 y 值减小。
看了 http://apmonitor.com/wiki/index.php/Main/ObjectBspline 后,我意识到 xdata 和 ydata 是 bspline 的节点,z 值是系数。因此,这些值可以从scipy.interpolate.bisplrep(xdata,ydata,zdata(获得,它返回一个列表,其中包含用于定义表面的节点和系数。然后,这些可以作为m.bspline(xtest,ytest,ztest,tck[0],tck[1],tck[2],data=False(输入到bspline函数中。