找回密码
 注册
关于网站域名变更的通知
查看: 588|回复: 3
打印 上一主题 下一主题

matlab拟合得到二元函数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-12-3 13:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

该用户从未签到

2#
发表于 2020-12-3 14:26 | 只看该作者
帮你顶一下

该用户从未签到

3#
发表于 2020-12-3 14:31 | 只看该作者
数据不同,不能用此前的模型和初值。另,只有少量的数据是不能用很复杂(包含很多效应项)的模型的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-11-2 00:16 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表