matlab 如何拟合二维函数表达式? z=f(x,y)
发布网友
发布时间:2022-08-23 18:01
我来回答
共1个回答
热心网友
时间:2024-11-26 22:34
楼主说的这个问题是线性拟合问题,不必用专门的拟合命令:
推导:
z = a0+a1*x+a2*y
==> z = [1 x y]*[a0
a1
a2]
所以,要求未知参数列向量a,直接用矩阵除法就可以了:
a = xy\z
其中
xy = [1 1 0
1 2 0
1 1 1
1 2 1
1 0 1
1 0 2] %第2列为x,第3列为y
z = [4 7 8 11 5 9]';
求出的结果是:
>> xy\z
ans =
1.0000
3.0000
4.0000追问谢谢,我在万方找到一篇文章用最小二乘法解方程解决了,《二元一次函数曲线拟合的Matlab实现.pdf》。
不是应该[1 x y]的逆矩阵左乘Z矩阵 求出系数矩阵A么,怎么是[1 x y] /z还得到正确结果了,而且不是方阵没有逆矩阵额。。。
追答首先,“ [1 x y] /z ”应该是 [1 x y]\z(左除矩阵[1 x y]),也就是说,[1 x y] 在分母上,z在分子上(谁在斜杆的下方谁就是分母);
然后,这里的矩阵除法实际上是最小二乘法的一种在线性方程组中的表达,并不真正是矩阵求逆。