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

matlab拟合得到二元函数

[复制链接]

该用户从未签到

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

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

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-31 06:33 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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