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

matlab拟合得到二元函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
想通过matlab拟合得到二元函数y=f(x1,x2)的表达式,但是这里面18组初始的b值是参考别人的模板,因为是用另外的数据生成的,请问怎么用程序实现我这组数据里面的18组初始b值呢?比如用nlinfit,或者cftool,请大佬多多指教! 之前用cftool拟合后得到的poly23多项式函数的函数值域与已知数据相差几个数量级,函数表达式明显是错误的
; ^& i1 m, H3 q' q# X  V代码如下:
9 F4 M+ o* b( L* Cclear,clc' s/ |0 i/ t0 l. u
x1=[1.2:.1:1.7]';$ E4 i: V5 x( D# P' }
x2=[1000        5000        7500       10000        15000];
1 S' }- N: N/ H! \" ?y=[14964       13166        14235      15550        19200+ e# U  m' e4 G& }& j
   13479       13479        13090      14235        170147 u/ {9 [# b4 I8 c4 V
   13747       13747        12750      13139        14991
5 t) w! N8 Y  T" {: E% p6 z   13917       13917        13019      12553        13967
5 B1 {# V) J  v* w4 ]$ {: D   14065       14065        13386      12821        13188
3 y( ~- w- B" W   14306       14306        13578      13040        12728];2 ^" M# L8 J6 O2 o; Z0 m
n1=length(x1);n2=length(x2);" J" U& c1 z  j$ I
x1=x1*ones(1,n2);x1=x1(;
5 |: O/ Y! I9 _6 a; mx2=ones(n1,1)*x2;x2=x2(;
1 C3 K2 S8 k" f) gy=y(; X=[x1,x2]; n=length(y);
* a7 ^9 G: b8 w5 Q+ Fstr=num2str([1:n]');
4 Q8 J' A# K, O' S9 [& B, \fx1=@(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));% v1 d" l8 L0 q5 A# u
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)));
, a( v6 U# B# r# I$ T- g6 J0 Ob=[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];
5 y/ V& v0 }, J% y$ H- u% }1 jfor l=1:5" G3 i6 k. }' e3 e- q
    b=lsqcurvefit(fx2,b,X,y);
( m! H1 q) q( P1 I    b=nlinfit(X,y,fx2,b);
, M  _% V/ k7 J, V& [9 `6 nend
4 i  G: C( {) D4 r& ~b/ }) ?, T* w3 }- V9 \7 ^) }
figure(1),clf/ v! G) m1 O" I2 G, d
plot3(x1,x2,y,'o')
  h- Y0 o; p8 b. dstem3(x1,x2,y,'filled')) _2 m5 g, [1 v& L! c' u! b
text(x1,x2,y+.01,str)& D' B5 O7 |) [" ?9 X6 D7 S
hold on; d) H% T( N0 n5 p
[x11,x22]=meshgrid(min(x1):range(x1)/80:max(x1),min(x2):range(x2)/80:max(x2));2 ^0 v" a; S. G8 b
yhat=fx1(b,x11,x22);, B" w( N% M5 y. z. q5 b9 I
suRF(x11,x22,yhat)/ C8 E" E4 `0 C9 ^, K  r
shading interp
7 u; v' k( T: D7 ^9 l" f- F1 v) ~5 ]alpha(.8)
1 f5 R6 R3 _, e8 d; v3 }: G- aaxis tight
) S1 X! \0 A$ `0 C, g9 {3 o8 @xlabel('α');ylabel('C'),zlabel('V1')# T+ x8 L6 H3 I: Q/ Y! {
SSy=var(y)*(n-1)3 w  C. I: }5 `
y1=fx1(b,x1,x2);2 z! K4 U0 e4 d8 s6 U, F
RSS=(y-y1)'*(y-y1)
& _$ R6 j3 K9 r  j+ zrsquare=(SSy-RSS)/SSy9 t. N0 Z9 \1 j+ p' |6 `
MSe=RSS/(n-length(b))4 ^) H( L  j; e

+ v! v# q: d6 T, S; _

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-6 23:04 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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