关于matlab下用最小二乘法拟合曲面的问题

来源:百度知道 编辑:UC知道 时间:2024/06/14 20:41:50
我在matlab下想对函数z=a(1)*x+a(2)*y+a(3)进行最小二乘拟合,数据为
x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];
y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];
z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];
查了不少资料,没有找到解决办法,还请各位多多帮忙。谢谢。
我是想实现曲面拟合,谢谢!

x=[1.52 3.03 3.27 4.2 0.93 -4.2 -3.27 -3.03 -1.52];
y=[0.8 2.1 4.6 7.1 8.4 7.1 4.6 2.1 0.8];
z=[2.16 2.4 2.69 3.82 3.02 2.68 2.5 2.48 2.31];
A=[x',y',ones(size(x'))];
a=A\z'

得到
a =
0.0592
0.1269
2.1371
就是说a(1)=0.0592
a(2)=0.1269
a(3)=2.371

原理:
我们可以把这题看成已知x,y,z,来求a(1),a(2),a(3)
由于表达式对于a(1),a(2),a(3)来说是线性的。
也就相当于求解三元一次方程组(只不过这里的方程数比未知数个数多)。这个可以用矩阵来解决。
你先看一下上面构造出来的A,然后再看一下A乘以[a1;a2;a3]这个列向量。
可能你就知道上面是什么意思了。

用命令rstool 自 己看帮助吧

这个拟合出来的是平面吧,怎么能是曲面拟合呢?