|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
想通过matlab拟合得到二元函数y=f(x1,x2)的表达式,但是这里面18组初始的b值是参考别人的模板,因为是用另外的数据生成的,请问怎么用程序实现我这组数据里面的18组初始b值呢?比如用nlinfit,或者cftool,请大佬多多指教! 之前用cftool拟合后得到的poly23多项式函数的函数值域与已知数据相差几个数量级,函数表达式明显是错误的
' @' i% D8 g P) ^& z1 @, c代码如下:' n" k# B! v0 d. {; J1 [
clear,clc
9 @5 B" a) X: i. _# Gx1=[1.2:.1:1.7]';
( r4 d4 y/ P) g1 C% kx2=[1000 5000 7500 10000 15000];
1 i) f$ Z+ F# X* q6 B/ `+ oy=[14964 13166 14235 15550 19200
) `& ^% G8 A. z8 G' D. T8 ?6 X5 \ 13479 13479 13090 14235 17014- y/ ]: b) y' f' C% [( _
13747 13747 12750 13139 149911 d) V d4 }8 x; j7 }( h) [+ s( I9 ?
13917 13917 13019 12553 13967
- t% k& E+ z7 z7 I6 [0 X 14065 14065 13386 12821 13188
, S( E, _: b. j( g, ~) a 14306 14306 13578 13040 12728];
" m' u1 [6 r. x% M3 O2 Tn1=length(x1);n2=length(x2);' Z6 D$ F2 L# v1 F( ^. X( v
x1=x1*ones(1,n2);x1=x1( ;/ s, @1 @. v! V$ ?! S
x2=ones(n1,1)*x2;x2=x2( ;
4 i" f1 R- u7 f- Y0 o. h7 M4 ey=y( ; X=[x1,x2]; n=length(y);
+ z& c$ E8 s5 pstr=num2str([1:n]');
4 Y/ U7 o2 N) efx1=@(b,x1,x2)(b(1)+b(2)*x2+b(3)*x2.^2+b(4)*x1.*x2+b(5)*x1.^3+b(6)*x2.^3+b(7)*x1.^4+b(8)*x2.^4+b(9)*x1.*x2.^3+b(10)*x1.^2.*x2.^2+b(11)*x1.^5+b(12)*x2.^5)./(1+b(13)*exp(b(14)*x1+b(15)*x2+b(16)*x1.^2+b(17)*x2.^2+b(18)*x1.*x2));/ G8 ~+ _7 k7 `+ E
fx2=@(b,X)(b(1)+b(2)*X(:,2)+b(3)*X(:,2).^2+b(4)*X(:,1).*X(:,2)+b(5)*X(:,1).^3+b(6)*X(:,2).^3+b(7)*X(:,1).^4+b(8)*X(:,2).^4+b(9)*X(:,1).*X(:,2).^3+b(10)*X(:,1).^2.*X(:,2).^2+b(11)*X(:,1).^5+b(12)*X(:,2).^5)./(1+b(13)*exp(b(14)*X(:,1)+b(15)*X(:,2)+b(16)*X(:,1).^2+b(17)*X(:,2).^2+b(18)*X(:,1).*X(:,2)));
{( _* q% k( s* C. ~8 y" J( }b=[345.45 -191.53 41.80 -2.6793 83.3156 -4.4545 -156.1311 0.2333 -0.0086582 0.251804 81.565 -0.0048047 989422 -146.607 4.003 95.35213571 -0.25589 2.752];* ^2 q0 W) |4 f# v$ W: E0 }; \
for l=1:5
" Z) |% U% e5 g3 D- o( R; N b=lsqcurvefit(fx2,b,X,y);
# L7 c+ s, X/ n8 D( D b=nlinfit(X,y,fx2,b);
5 @1 L9 u7 v- q5 {: hend8 P9 d1 [! i. g
b
/ M8 _) W# I3 ?+ gfigure(1),clf
4 |. O; _$ H8 Aplot3(x1,x2,y,'o')
5 ~0 \6 X; ?- Bstem3(x1,x2,y,'filled')% z+ C; h. \2 `8 ]+ U( [
text(x1,x2,y+.01,str)
, H! j) x3 C) @; k0 f( }! _hold on
2 a1 X) w+ O' q. m[x11,x22]=meshgrid(min(x1):range(x1)/80:max(x1),min(x2):range(x2)/80:max(x2));
+ Y; A' _/ H y/ }+ Ryhat=fx1(b,x11,x22);
$ ?; e8 W# \2 X& |$ T) k) e9 asuRF(x11,x22,yhat); n6 f* [8 d" Z" M. ]/ O% U
shading interp+ _1 X; p7 e* N$ J# p
alpha(.8)
D) z! U( J; b8 [" ^; Vaxis tight5 w4 x' F+ P6 W7 z4 G, G3 j9 f( E
xlabel('α');ylabel('C'),zlabel('V1')
- x+ c! `3 `5 \6 u. D9 ~SSy=var(y)*(n-1)2 f8 c F8 Y: [. T6 _0 ^
y1=fx1(b,x1,x2);
. V% ~! S& u X! w8 P9 Y6 ?% `4 zRSS=(y-y1)'*(y-y1)1 k" O X8 I. i9 f3 i3 c- j
rsquare=(SSy-RSS)/SSy' O' O$ O" j4 V! F4 L! s" @8 D
MSe=RSS/(n-length(b))" P% N# i: y- s+ Q9 X! {8 O
; _$ h# q% O0 Q0 n8 S* g |
|