已知三维坐标点30个,用MATLAB拟合求方程系数,方程已知V=a+bx+cy+dy^2+exy+fxy^2

x为0.2 0.4 0.6 0.8 1 1.2
Y为0.84 0.60 0.51 0.41 0.34
V位每组x y分别对应的的体积数据一共三十个
现在想求出上述方程的六个系数,取六个点用矩阵误差太大了……求问大神怎么拟合出曲面求系数啊?
没学过MATLAB就是想处理个数据~谢谢各位大神了求解答!!最好简单一点儿~~~~(>_<)~~~~麻烦把程序也贴上来谢谢!

参考代码:
[x,y] = meshgrid(x,y);
x = x(:);
y = y(:);
a_f = [ones(size(x)) x y y.^2 x.*y x.*y.^2]\V(:)
得到的结果就依次为a~f。

测试实例:
% 生成测试数据
x = [0.2 0.4 0.6 0.8 1 1.2];
y = [0.84 0.60 0.51 0.41 0.34];
[x,y] = meshgrid(x,y);
[a,b,c,d,e,f] = deal(1,2,3,4,5,6);
V = a+b*x+c*y+d*y.^2+e*x.*y+f*x.*y.^2;
V = V + randn(size(V))*0.01; % 加入噪声
x = x(:);
y = y(:);
a_f = [ones(size(x)) x y y.^2 x.*y x.*y.^2]\V(:)追问

不好意思啊是我没说清楚,V的三十个值我是知道的,需要通过x y和V的三十组数据来确定a到f。同时也知道公式
所以应该也是需要输入V的值的吧?谢谢你!

追答

是啊,我给的前面一段代码(一共4行)就是你已经有了x、y向量和V矩阵之后需要用到的。
后面那段示例是通过自己产生的数据来验证前面代码正确性的。

追问

所以我在这四行之前把我的x y和V输入进去就行了吗?这样出来的结果好像不太对(>_<)真是一点都不会MATLAB好捉急,麻烦你了!

温馨提示:内容为网友见解,仅供参考
无其他回答

已知三维坐标点30个,用MATLAB拟合求方程系数,方程已知V=a+bx+cy+...
V = a+b*x+c*y+d*y.^2+e*x.*y+f*x.*y.^2;V = V + randn(size(V))*0.01; % 加入噪声 x = x(:);y = y(:);a_f = [ones(size(x)) x y y.^2 x.*y x.*y.^2]\\V(:)

Matlab求助! 已知空间三点位置及到目标点的距离,求目标坐标?
[x,y,z]=solve('(x1-x)^2+(y1-y)^2+(z1-z)^2=r1^2', '(x2-x)^2+(y2-y)^2+(z2-z)^2=r2^2','(x3-x)^2+(y3-y)^2+(z3-z)^2=r3^2','x','y','z')

相似回答