1

各要素が空間内の関数値を表す 100x100 行列を考えると、関数 f(x, y) = A + B x + C y + D X^のパラメーター値 A、B、C、D、E を見つけたいと思います。2+E y^2 は、指定された行列値に最もよく適合します。ここで、x は行番号を表し、y は列番号を表します

より小さな例で目的を説明するために、3x3 行列 T があるとします。

T = [0.1 0.2 0.1; 0.8, 0.6, 0.5; 0.1, 0, 1]

この場合、f(1,1) = 0.1 および f(3,2)= 0 です。

具体的には、フィッティング関数 (サーフェス) を見つけたいマトリックス値が下の画像に表示されます。

ここに画像の説明を入力

与えられた行列に (最適に) 適合する 3D 関数を見つける方法を誰かが提案してくれたら、とてもありがたいです。

編集

適合を直接見つけることは可能ですか、それとも最初にデータを行列 [X, Y, f(X,Y)] として表す必要がある (またはそれ以上) ですか?

vals = []
for(i = 1: 100)
for j = 1 : 100
if(T(i,j) ~= 0)
vals = [vals;i, j, T(i,j)];
end;
end;
end;
4

1 に答える 1

1

これらの人はそれを一行で行ったようです:

http://www.mathworks.com/matlabcentral/newsreader/view_thread/134076

x = % vector of x values
y = % vector of y values
z = % f(x,y)

V = [1 x y x.^2 x.*y y.^2];
a = V \ z ;

ヘルプページから:

  • A が m ~= n の m 行 n 列の四角形行列であり、B が m 要素の列ベクトルまたは m 行の行列である場合、A\B は連立方程式 A* の最小二乗解を返します。 x=B。
于 2013-02-15T19:45:44.997 に答える