18

a,bポイントとそれに対応する値の離散的な規則的なグリッドがあり、cそれをさらに補間して滑らかな曲線を取得します。補間データから、さらにカーブ フィッティング用の多項式を作成します。3Dプロットを多項式に合わせる方法は?

私はMATLABでこれをやろうとしています。MATLAB (r2010a) の曲面近似ツールボックスを使用して、3 次元データを曲線近似しました。しかし、MATLAB/MAPLE またはその他のソフトウェアで、データのセットに最適な利点をもたらす式を見つけるにはどうすればよいでしょうか。何かアドバイス?また、最も役立つのは、実際のコード例、PDF ファイル、Web などです。

これは私のデータのほんの一部です。

a = [ 0.001 .. 0.011];

b = [1, .. 10];

c = [ -.304860225, .. .379710865]; 

前もって感謝します。

4

3 に答える 3

3

ファイル交換にはもっと良い機能があるかもしれませんが、手動で行う 1 つの方法は次のとおりです。

x = a(:); %make column vectors
y = b(:);
z = c(:);

%first order fit
M = [ones(size(x)), x, y];
k1 = M\z; 
%least square solution of z = M * k1, so z = k1(1) + k1(2) * x + k1(3) * y

同様に、2 次近似を行うことができます。

%second order fit
M = [ones(size(x)), x, y, x.^2, x.*y, y.^2];
k2 = M\z;

あなたが与えた限られたデータセットに対して数値的な問題があるようです。help mldivide詳細については、入力してください。

通常のグリッドを補間するには、次のようにします。

ngrid = 20;
[A,B] = meshgrid(linspace(min(a), max(a), ngrid), ...
                 linspace(min(b), max(b), ngrid));
M = [ones(numel(A),1), A(:), B(:), A(:).^2, A(:).*B(:), B(:).^2];
C2_fit = reshape(M * k2, size(A)); % = k2(1) + k2(2)*A + k2(3)*B + k2(4)*A.^2 + ...

%plot to compare fit with original data
surfl(A,B,C2_fit);shading flat;colormap gray
hold on
plot3(a,b,c, '.r')

以下の TryHard で与えられた式を使用して 3 次の近似を行うことができますが、次数が増えると、式はすぐに面倒になります。M与えられxyを構築できる関数を作成orderしたほうがよいでしょう。それを複数回行う必要がある場合。

于 2013-08-31T20:57:46.150 に答える