| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-08-25 
				
				年龄: 51 
				
					帖子: 3
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			请教高手,怎么用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  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2007-06-24 
				
				年龄: 70 
				
					帖子: 188
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			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 此帖于 2009-08-27 16:45 被 slgu 编辑。  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-08-25 
				
				年龄: 51 
				
					帖子: 3
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			不好意思!我没有看懂!难道b=X\y就能把拟合系数a1~a6算出吗?
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#4 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2007-06-24 
				
				年龄: 70 
				
					帖子: 188
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			行不行?试试不就知道了!另外,数据点17的u值似乎有问题,请检查。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#5 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-08-25 
				
				年龄: 51 
				
					帖子: 3
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			谢谢!问题解决了。是用regress()做,只不过要用一下换元,换成多元一次的拟合方程就行了~
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#6 | 
| 
			
			 高级会员 
			
			
			
			注册日期: 2007-06-24 
				
				年龄: 70 
				
					帖子: 188
				 
				
				
				声望力: 22 ![]()  | 
	
	
	
		
		
			
			 
			
			在构建相同结构阵(X)的前提下,b=X\y 与 b=regress(y,X)的结果是完全一样。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |