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

matlab拟合得到二元函数

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
想通过matlab拟合得到二元函数y=f(x1,x2)的表达式,但是这里面18组初始的b值是参考别人的模板,因为是用另外的数据生成的,请问怎么用程序实现我这组数据里面的18组初始b值呢?比如用nlinfit,或者cftool,请大佬多多指教! 之前用cftool拟合后得到的poly23多项式函数的函数值域与已知数据相差几个数量级,函数表达式明显是错误的2 O) N9 R7 n$ `$ \: d1 J
代码如下:8 o, H9 r. ]* s6 c5 }
clear,clc
7 Z) _" b- }9 I9 x- m$ Ax1=[1.2:.1:1.7]';" _' `' H7 P0 A6 o5 K# V. e
x2=[1000        5000        7500       10000        15000];
+ e9 @1 D3 D$ N9 `- H$ cy=[14964       13166        14235      15550        19200! D! b! X: h! z+ k
   13479       13479        13090      14235        17014
+ m) t; h8 v) c2 @. z   13747       13747        12750      13139        14991( x8 W8 k  C+ s" a; X# x  Y
   13917       13917        13019      12553        13967
" r7 l+ Q6 v: e( ?* |. t# M  ~! d   14065       14065        13386      12821        13188/ u0 K# T: y: r
   14306       14306        13578      13040        12728];2 ~2 z* Y1 K' t% f( `/ L
n1=length(x1);n2=length(x2);
) I7 E5 c* q+ Kx1=x1*ones(1,n2);x1=x1(;
& t/ [5 b. d: O) k) x$ Cx2=ones(n1,1)*x2;x2=x2(;$ D* `7 e8 \: u3 \$ m
y=y(; X=[x1,x2]; n=length(y);
2 B) v+ a$ G4 h& y& f5 q0 ^str=num2str([1:n]');
9 X# R5 e4 k# q3 l  vfx1=@(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));
0 W4 I+ D0 P8 ?5 ^5 G* Vfx2=@(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)));
) X# r6 w* ^" R; Gb=[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];
; M. ]4 Y6 Y0 r9 x, O5 `- afor l=1:5
# X5 w: f7 ~4 {" M. o1 a% N    b=lsqcurvefit(fx2,b,X,y);" M4 y5 u' `) [% J- L7 M% j1 W
    b=nlinfit(X,y,fx2,b);0 {; ]& C# e* ^. Y6 |1 B
end
/ c3 C  n: H; g) K* s) w  o5 y4 Mb
; }- J8 t6 y6 Lfigure(1),clf  ^* `9 `, e# S+ j
plot3(x1,x2,y,'o'). p, w, q! p8 T8 h- C$ G
stem3(x1,x2,y,'filled')- P6 x+ e8 O% ]" x5 ^4 m7 x
text(x1,x2,y+.01,str)
- g) q. A2 u) z5 v% a; z& |hold on. a5 k) m1 @2 E# ^- J1 H0 e
[x11,x22]=meshgrid(min(x1):range(x1)/80:max(x1),min(x2):range(x2)/80:max(x2));
! U" K* f9 B! ]6 q; m# Ayhat=fx1(b,x11,x22);
3 n. U( z! @7 N% x3 qsuRF(x11,x22,yhat)3 \# @5 f' S% Z4 r2 q* p# m
shading interp) O3 O6 F/ S( W4 e  A4 l
alpha(.8)
6 f/ o4 o9 K( zaxis tight5 e" E  e. _* \0 K
xlabel('α');ylabel('C'),zlabel('V1')
' G/ `) h# T7 B* G  o% m" p3 @SSy=var(y)*(n-1); l1 e0 u' O/ B( W9 q1 A) @- C3 H
y1=fx1(b,x1,x2);7 F, _( Q' Q5 a' K  s
RSS=(y-y1)'*(y-y1): t* b2 {- c8 Y/ W% h
rsquare=(SSy-RSS)/SSy* T2 v' x. `, S" {# @7 s
MSe=RSS/(n-length(b))
/ X, {+ p* q9 y8 z
( `  j' g$ o3 ~

该用户从未签到

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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