-1

いくつかの matlab コードを python に変換しようとしていて、matlab の mkpp 関数に遭遇しました。scipy を使用した python での補間についてさまざまなことを読んだことがありますが、matlab コードの機能を模倣する方法がわかりません。scipy で interpolate.PiecewisePolynomial を使用してみましたが、matlab ではブレークと係数である同じ引数を使用していないようです。matlabが実際に行っていることのソースはありますか? Pythonでmkppの機能をどのように模倣できますか?

編集:以下のコメントから、はい、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 とは異なる引数を取ることです。coefs と break を作成するための python コードを書きましたが、scipy のドキュメントhttp://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.PiecewisePolynomial.html#scipy.interpolate.PiecewisePolynomialは参照すらしていません。変数を同じように使用するため、非常に混乱します。

使用されている用語が何を意味するかについて、誰かがこれを解析するのを手伝ってくれるといいですね

4

1 に答える 1