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

Matlab 如何找到[n x n]矩阵值的拟合函数,matlab,curve-fitting,Matlab,Curve Fitting,给定100x100矩阵,其中每个元素表示空间中的函数值,我想找到函数f(x,y)=a+Bx+Cy+DX^2+Ey^2的参数值a、B、C、D、E,其中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函数,我将非常

给定100x100矩阵,其中每个元素表示空间中的函数值,我想找到函数f(x,y)=a+Bx+Cy+DX^2+Ey^2的参数值a、B、C、D、E,其中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)]:


这些人似乎用一句话做到了:

发件人:

  • 如果A是m~=n的矩形m×n矩阵,B是m个元素的列向量或m行矩阵,则A\B返回方程组A*x=B的最小二乘解

这些家伙似乎用一句话就做到了:

发件人:

  • 如果A是m~=n的矩形m×n矩阵,B是m个元素的列向量或m行矩阵,则A\B返回方程组A*x=B的最小二乘解

我认为这不是一个编程问题。。这是一道高等数学题。我想你的意思是说
f(x,y)=A+B*x+C*y+D*x^2+E*x*y+f*y^2
。这就是多元多项式函数通常的想法。当你从A+B开始时,这并没有真正的意义,你应该至少去掉其中的一个。此外,你的变量似乎是线性独立的,那么为什么不尝试线性回归呢?感谢@Phonon提醒我休息一下:)你能减少拟合参数的数量吗?因为你真正拥有的是
f(x,y)=(c1*x+c2*y)^2
既然我可以将
f
细化为
f-A
既然A不依赖于x,y和'c1^2=D,c2^2=f,c1*c2=E'等等?我不认为这是一个编程问题。。这是一道高等数学题。我想你的意思是说
f(x,y)=A+B*x+C*y+D*x^2+E*x*y+f*y^2
。这就是多元多项式函数通常的想法。当你从A+B开始时,这并没有真正的意义,你应该至少去掉其中的一个。此外,你的变量似乎是线性独立的,那么为什么不尝试线性回归呢?感谢@Phonon提醒我休息一下:)你能减少拟合参数的数量吗?因为你真正拥有的是
f(x,y)=(c1*x+c2*y)^2
因为我可以将
f
细化为
f-A
因为A不依赖于x,y和'c1^2=D,c2^2=f,c1*c2=E'等?
vals = []
for(i = 1: 100)
for j = 1 : 100
if(T(i,j) ~= 0)
vals = [vals;i, j, T(i,j)];
end;
end;
end;
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 ;