matlab拟合z f xy,求助u=f(x,y,z)曲面拟合

clear,clc

X=xlsread('data');%输入数据

x1=X(:,1);x2=X(:,2);x3=X(:,3);y=X(:,4)-500;

fx=@(b,x1,x2,x3)(b(1)+b(2)*x1+b(3)*x2+b(4)*x3+b(5)*x1.^2+b(6)*x2.^2+b(7)*x3.^2+b(8)*x1.*x2+b(9)*x1.*x3+b(10)*x2.*x3)./(1+b(11)*x1+b(12)*x2+b(13)*x3+b(14)*x1.*x2+b(15)*x1.*x3+b(16)*x2.*x3);

fx2=@(b,X)(b(1)+b(2)*X(:,1)+b(3)*X(:,2)+b(4)*X(:,3)+b(5)*X(:,1).^2+b(6)*X(:,2).^2+b(7)*X(:,3).^2+b(8)*X(:,1).*X(:,2)+b(9)*X(:,1).*X(:,3)+b(10)*X(:,2).*X(:,3))./(1+b(11)*X(:,1)+b(12)*X(:,2)+b(13)*X(:,3)+b(14)*X(:,1).*X(:,2)+b(15)*X(:,1).*X(:,3)+b(16)*X(:,2).*X(:,3));

X=[x1,x2,x3];

b=[-176.5018083  13.88239877  -187.3799167  -110.7606078  -21.2028137  -5.808768406  -6.834844845  334.5716365  198.2603636  6.232153986  -0.3868552461  0.2198642871  1.120280285  1.434581121  0.5084595541  -0.09072968599];

for l=1:5

b=lsqcurvefit(fx2,b,X,y);

b=nlinfit(X,y,fx2,b);

end

b

m1=mean(x1);m2=mean(x2);m3=mean(x3);

r1=range(x1); r2=range(x2);r3=range(x3);ry=range(y);

x1a=min(x1);x1b=max(x1);

x2a=min(x2);x2b=max(x2);

x3a=min(x3);x3b=max(x3);

ya=min(y);yb=max(y);

n=length(y);

figure(1),clf

plot3(x1,x2,y,'o')

stem3(x1,x2,y)

pause(.0001)

hold on

[x11,x22]=meshgrid(x1a:r1/75:x1b,x2a:r2/75:x2b);

y1=fx(b,x11,x22,m3);

surf(x11,x22,y1)

axis([x1a x1b x2a x2b ya yb])

alpha(.85)

shading interp

axis tight

xlabel('X1'),ylabel('X2'),zlabel('Y')

pause(1.0001)

figure(2),clf

[x11,x33]=meshgrid(x1a:r1/75:x1b,x3a:r3/75:x3b);

plot3(x1,x3,y,'o')

stem3(x1,x3,y)

pause(.0001)

hold on

y2=fx(b,x11,m2,x33);

surf(x11,x33,y2)

axis([x1a x1b x3a x3b ya yb])

alpha(.85)

shading interp

axis tight

xlabel('X1'),ylabel('X3'),zlabel('Y')

pause(1.0001)

figure(3),clf

plot3(x2,x3,y,'o')

stem3(x2,x3,y)

pause(.0001)

hold on

[x22,x33]=meshgrid(x2a:r2/75:x2b,x3a:r3/75:x3b);

y3=fx(b,m1,x22,x33);

surf(x22,x33,y3)

axis([x2a x2b x3a x3b ya yb])

alpha(.85)

shading interp

axis tight

xlabel('X2'),ylabel('X3'),zlabel('Y')

pause(1.0001)

y1=fx(b,x1,x2,x3);

RSS=(y-y1)'*(y-y1)

SSy=var(y)*(n-1)

Rsquare=(SSy-RSS)/SSy;

r2=vpa(Rsquare,8)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值