我正在尝试将一些matlab代码转换为python并运行到matlab的mkpp函数中。我已经阅读了许多关于使用 scipy 在 python 中插值的不同内容,但我无法理解如何模仿 matlab 代码的功能。我尝试在 scipy 中使用 interpolate.PiecewisePolynomial,但它似乎没有采用相同的参数,在 matlab 中是中断和系数。是否有matlab实际在做什么的来源?mkpp的功能如何在python中模仿?
编辑:所以从下面的评论中,是的,我试过查看 mkpp 文件,
if nargin==2, d = 1; else d = d(:).'; end
dlk=numel(coefs); l=length(breaks)-1; dl=prod(d)*l; k=fix(dlk/dl+100*eps);
if (k<=0)||(dl*k~=dlk)
error(message('MATLAB:mkpp:PPNumberMismatchCoeffs',...
int2str(l),int2str(d),int2str(dlk)))
end
pp.form = 'pp';
pp.breaks = reshape(breaks,1,l+1);
pp.coefs = reshape(coefs,dl,k);
pp.pieces = l;
pp.order = k;
pp.dim = d;
文件是这样说的,我找不到任何pp的文件,所以它似乎没用。
我读过这个:有人可以解释函数 mkpp 和 ppval 的行为吗? 但是,它仍然没有解释 matlab 在幕后做什么,它只是解释它与常规多项式不同。
我什至开始弄清楚的问题是,我为 scipy 找到的所有内容都采用与 mkpp 不同的参数。我已经编写了 python 代码来创建 coefs 和中断,但是 scipy 文档http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.PiecewisePolynomial.html#scipy.interpolate.PiecewisePolynomial甚至没有参考变量以相同的方式,使其非常混乱。
如果有人可以帮助解析所使用的术语的含义,那就太好了