【问题标题】:How to find a fitting function for [n x n] matrix values如何找到 [n x n] 矩阵值的拟合函数
【发布时间】:2013-01-31 19:25:49
【问题描述】:

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

【问题讨论】:

  • 我不认为这是一道编程题。这是一道高级数学题。
  • 我想你的意思是说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' 等?

标签: matlab curve-fitting


【解决方案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×n 矩形矩阵,并且 B 是具有 m 个元素的列向量或具有 m 行的矩阵,则 A\B 将最小二乘解返回给系统方程 A*x= B。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-02
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多