MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB数学相关] matlab计算二元二次拟合问题 (https://www.labfans.com/bbs/showthread.php?t=9518)

szren 2009-08-25 11:03

matlab计算二元二次拟合问题
 
请教高手,怎么用matlab计算二元二次拟合问题?如
u=a1*x^2+a2*y^2+a3*x*y+a4*x+a5*y+a6
请给源程序,谢谢!
想用regress().来做,可是regress()好像是线性回归呀,有人说不可以用来做拟合,上学的时候没有好好学,现在搞不清回归和拟合有什么区别?有人能回答吗?谢谢!!
数据如下:
x y u
0.00 45.00 3485.0
0.00 50.00 3254.7
0.00 55.00 3024.6
0.00 60.00 2795.8
3.00 45.00 3966.2
3.00 50.00 3726.6
3.00 55.00 3486.2
3.00 60.00 3246.0
6.00 45.00 4475.3
6.00 50.00 4225.3
6.00 55.00 3975.6
6.00 60.00 3726.1
7.00 45.00 4652.8
7.00 50.00 4398.1
7.00 55.00 4145.6
7.00 60.00 3892.3
8.00 45.00 483.11
8.00 50.00 4574.6
8.00 55.00 4318.4
8.00 60.00 4062.3

slgu 2009-08-25 12:09

回复: matlab计算二元二次拟合问题
 
x1=[...];x2=[...];u=[...];%将原x1(第一列),x2(第二列),u(第三列)输入
x=[x1,x2,x1.^2,x1.*x2];
X=[ones(20,1),x];
y=u
b=X\y
fx=@(b,x1,x2)b(1)+b(2)*x1+b(3)*x2+b(4)*x1.^2+b(5)*x1.*x2; [x11,x22]=meshgrid(min(x1):range(x1)/60:max(x1),min(x2):range(x2)/60:max(x2));
y1=fx(b,x11,x22);
plot3(x1,x2,y,'o');
stem3(x1,x2,y,'filled')
str=num2str([1:20]');
text(x1,x2,y+range(y)/20,str,'fontsize',15)
hold on
surf(x11,x22,y1)
shading interp
alpha(.75)
axis tight

szren 2009-08-25 15:47

回复: matlab计算二元二次拟合问题
 
不好意思!我没有看懂!难道b=X\y就能把拟合系数a1~a6算出吗?

slgu 2009-08-25 23:46

回复: matlab计算二元二次拟合问题
 
行不行?试试不就知道了!另外,数据点17的u值似乎有问题,请检查。

szren 2009-08-28 09:48

回复: matlab计算二元二次拟合问题
 
谢谢!问题解决了。是用regress()做,只不过要用一下换元,换成多元一次的拟合方程就行了~

slgu 2009-08-30 08:47

回复: matlab计算二元二次拟合问题
 
在构建相同结构阵(X)的前提下,b=X\y 与 b=regress(y,X)的结果是完全一样。


所有时间均为北京时间。现在的时间是 12:38

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.