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

matlab拟合得到二元函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
想通过matlab拟合得到二元函数y=f(x1,x2)的表达式,但是这里面18组初始的b值是参考别人的模板,因为是用另外的数据生成的,请问怎么用程序实现我这组数据里面的18组初始b值呢?比如用nlinfit,或者cftool,请大佬多多指教! 之前用cftool拟合后得到的poly23多项式函数的函数值域与已知数据相差几个数量级,函数表达式明显是错误的2 M/ U4 Z  l1 I! a  }: n
代码如下:
0 k5 ?7 o) ]' Mclear,clc8 w) K- m0 S4 b% U
x1=[1.2:.1:1.7]';
/ I. s+ [9 d* x9 a8 S) w" wx2=[1000        5000        7500       10000        15000];
7 F" ^7 g+ j1 C" D6 ny=[14964       13166        14235      15550        192004 d2 m& O# Z" M' c8 ~6 M5 J
   13479       13479        13090      14235        17014! G& R3 c# F% U: h7 w
   13747       13747        12750      13139        149913 D* K. s; ?6 `  i
   13917       13917        13019      12553        13967( S, j+ F9 @9 _2 n! Z6 c! L
   14065       14065        13386      12821        131882 K1 W' M; Y& h2 }) R' e8 f
   14306       14306        13578      13040        12728];
2 q( L4 q7 v, u# d' @! Kn1=length(x1);n2=length(x2);
0 e" o" f7 `, C" C: Bx1=x1*ones(1,n2);x1=x1(;  @, G# _, f7 |" B  ?
x2=ones(n1,1)*x2;x2=x2(;
0 S) Q- f  R; G$ Iy=y(; X=[x1,x2]; n=length(y);' e" a) a: t4 X9 y
str=num2str([1:n]');
- O8 |' b5 F! l- M+ e# zfx1=@(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));: ?, e0 C; W3 v$ h+ T! ~  r
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)));
! P3 p9 r6 s- ib=[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];3 j1 K* ]! t: \* \
for l=1:52 X8 n3 A: f5 l' H
    b=lsqcurvefit(fx2,b,X,y);8 o3 {  e. g7 m# N- M, m
    b=nlinfit(X,y,fx2,b);* {5 u5 ]! J$ {  @: o- K0 w, E
end, l1 ~! L+ T* P" Q
b
; g3 ], e1 H+ n- Dfigure(1),clf
4 r4 L4 k% Q0 _0 U3 G1 N/ z1 E: Hplot3(x1,x2,y,'o')6 V1 i7 v& j! F' \8 M
stem3(x1,x2,y,'filled')1 S! F7 |) o% i7 |  I
text(x1,x2,y+.01,str)7 S9 X$ |2 Q$ q  [
hold on0 L1 a6 a; h3 N1 @
[x11,x22]=meshgrid(min(x1):range(x1)/80:max(x1),min(x2):range(x2)/80:max(x2));* \2 M1 f4 }; A$ j
yhat=fx1(b,x11,x22);: s9 \, }! u) ~$ n" _
suRF(x11,x22,yhat)
; ]4 I- u8 _2 d' d7 Ashading interp
8 T7 u( u( G3 y0 O% w) talpha(.8)
  n: @9 l3 Q% G' S1 |axis tight
% r  H1 n% F& r$ oxlabel('α');ylabel('C'),zlabel('V1')8 n, I- k9 M0 F0 n' p
SSy=var(y)*(n-1), Y( \. \$ m( y/ s( X/ }
y1=fx1(b,x1,x2);
  z* M1 A; `8 C4 k8 URSS=(y-y1)'*(y-y1)
; \5 h+ l; E- n  Rrsquare=(SSy-RSS)/SSy( \8 e$ _! k9 S5 i" D$ b$ y
MSe=RSS/(n-length(b))
8 J/ |/ M; e9 h) {2 j- E# W. k: ]6 l, P! h6 `8 o

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-11-1 06:44 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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