如何找到[n×n]矩阵值的拟合函数

时间:2013-02-15 18:34:36

标签: matlab curve-fitting

给定100x100矩阵,其中每个元素表示空间中的函数值,我想找到函数f(x,y)= A + B x +的参数值A,B,C,D,E C y + D X ^ 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。

具体而言,我想找到拟合函数(曲面)的矩阵值显示在下图中:

enter image description here

如果有人建议找到适合(最佳)给定矩阵的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;

1 个答案:

答案 0 :(得分: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 ;

来自the help page

  • 如果A是m~ = n的矩形m-by-n矩阵,B是m个元素的列向量或m行的矩阵,则A \ B将最小二乘解得到系统方程A * x = B。