0

テーブルデータに2D多項式フィッティングを使用しようとしています。データ形式は、次のリンクとまったく同じです。http: //www.mathworks.de/help/toolbox/curvefit/brx2ldg-1.html#bso46rp-1

Xつまり、長さnY長さmm*n行列のベクトルがありZ、5次の2次元多項式をデータに適合させたいということです。

この問題を解決するためのMATLABの構文はありますか?IDLのSFITコマンドのように、http: //star.pst.qub.ac.uk/idl/SFIT.html

私は持っていcftoolますsftoolが、それらはこの目的のために機能しないようです、またはおそらく私はそれらを使用する方法を知りません。

また、MATLAB Mathworksファイル交換で共有されるm.fileがあることを知っています。正しく機能することがわかっている場合は、提案してください。

助けとコメントをいただければ幸いです。

4

1 に答える 1

2

ファイル交換からpolyfitnを使用し、データを再フォーマットして3つのMxN x,y,zベクトルを作成できます。

次の形式のテーブルデータがあると仮定します

N = 100; M = 80;
x = linspace(0, 1, M);
y = linspace(0, 1, N).';
z = bsxfun(@franke, x, y);

x用に作成meshgridし、代わりにy用に作成します

N = 100; M = 80;
[x, y] = meshgrid(0:1:N, 0:1:M);
z = bsxfun(@franke, x, y);

unique(x)(とは、テーブルの行と列unique(y)の元の値を提供することに注意してください。)linspace

polyfitnを使用して5次多項式係数を取得します

p = polyfitn([x(:),y(:)], z(:), 5);

さらに、結果をシンボリック形式に変換して、提供されているを使用して多項式を表示できます。polyn2sym(p)

>> pretty(polyn2sym(p))

                      5                           4                             4                         3   2
     90264379051097 X1         2537627280433653 X1  X2       7778045812403061 X1       6982058230382053 X1  X2
- ------------------------- - -------------------------- + ------------------------ - -------------------------- + ...
  2417851639229258349412352   38685626227668133590597632   604462909807314587353088   77371252455336267181195264
于 2012-09-11T16:08:00.070 に答える