|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
想通过matlab拟合得到二元函数y=f(x1,x2)的表达式,但是这里面18组初始的b值是参考别人的模板,因为是用另外的数据生成的,请问怎么用程序实现我这组数据里面的18组初始b值呢?比如用nlinfit,或者cftool,请大佬多多指教! 之前用cftool拟合后得到的poly23多项式函数的函数值域与已知数据相差几个数量级,函数表达式明显是错误的
' u' h& j) y% U! V2 ^2 } E代码如下:
8 _7 W# G9 T2 U4 Rclear,clc, e) ?6 x5 k; i! @
x1=[1.2:.1:1.7]';, e, `! J9 b3 c0 T! T9 M; V) S S g
x2=[1000 5000 7500 10000 15000];
8 X5 q/ f0 _, L. {& S2 Y7 n/ H; v! Ly=[14964 13166 14235 15550 192001 o# L6 S1 d" B6 P
13479 13479 13090 14235 17014
# q: C' t f& J0 n% m' S: U% r% C 13747 13747 12750 13139 14991
, M" ^6 P P( o( D+ J6 z 13917 13917 13019 12553 139673 L! e" I$ v, w I
14065 14065 13386 12821 13188. G: O! z( b1 b# S f
14306 14306 13578 13040 12728];
" ^. W3 w- u5 L0 Cn1=length(x1);n2=length(x2);; C0 l! Z: c8 Q. e* S6 u
x1=x1*ones(1,n2);x1=x1( ; }$ Y1 u" v3 b2 K) y" I
x2=ones(n1,1)*x2;x2=x2( ;8 s# \' k! |5 ^% {
y=y( ; X=[x1,x2]; n=length(y);" U: C% b H6 {+ m( t
str=num2str([1:n]');
7 ?2 q' b5 ^$ R7 Mfx1=@(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));
5 D7 e0 O) ^! g$ B+ Gfx2=@(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)));
# S# R4 r0 ]; Pb=[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];
7 I3 i( E$ m. h ~3 Dfor l=1:5& o' D5 j' o4 z. t J
b=lsqcurvefit(fx2,b,X,y);
( R1 Z8 E4 d: L1 w+ N8 ~ b=nlinfit(X,y,fx2,b);
/ _/ F) s G" O$ q& J/ O, eend/ e8 |8 u/ {: O7 C' B3 B9 x9 C
b5 f& {; w7 S) W
figure(1),clf1 y" Q8 q# i$ | j/ [0 l0 T7 W) M1 O
plot3(x1,x2,y,'o')
. W- _1 G& N4 e5 J& A& m3 hstem3(x1,x2,y,'filled')
. i6 U! P' b' X6 ]. z2 mtext(x1,x2,y+.01,str)
G7 x- A2 h T- Fhold on5 ^4 f/ s& W6 l. ~2 k7 n) T
[x11,x22]=meshgrid(min(x1):range(x1)/80:max(x1),min(x2):range(x2)/80:max(x2));/ d$ q" G$ X4 t
yhat=fx1(b,x11,x22);
. }. Q/ G5 @) X, m; p; ~suRF(x11,x22,yhat)
! y. n* p' _ e+ m3 xshading interp a$ h4 f) }# V0 m
alpha(.8)
" o2 e( G2 \- ?+ j' ?2 G8 baxis tight
1 E1 ]0 d0 R* vxlabel('α');ylabel('C'),zlabel('V1')+ [2 X" J- s2 E1 ~! \! i. K
SSy=var(y)*(n-1)# B, o: B( m8 O
y1=fx1(b,x1,x2);! M& p. [" b% a
RSS=(y-y1)'*(y-y1)6 j# |/ I/ b1 B. Q9 b2 j
rsquare=(SSy-RSS)/SSy
; N, t) ?1 G% e) H; C8 O; a5 KMSe=RSS/(n-length(b))0 Z5 W3 k2 v: ]. H) ]3 w8 S: ~
: T, A9 ~ V, u; [) a |
|