主题: [MATLAB数学相关] 非线性拟合
查看单个帖子
旧 2009-05-30, 22:48   #2
TTT_IOU
普通会员
 
注册日期: 2009-02-22
帖子: 91
声望力: 18
TTT_IOU 正向着好的方向发展
默认 回复: 非线性拟合

程序里面的β最好换掉,还有erf函数的括号问题!!
clear;clc;
x=[-500 -480 -450 -400 -350 -300 -200 -180 -150 -100 -75 -50 -25 0 50 100 125 150 200 220 230 300 350 400 500 600];
y=[0 4 6 10 50 120 150 180 200 400 600 800 1200 1400 1600 1500 1000 800 400 390 300 180 150 50 25 0];
myfunc=inline('0.5*beta(1)*sqrt(3)*erf(sqrt(pi)*beta(2)*x/200)-beta(1)*sqrt(3)*0.5*erf(sqrt(pi)*beta(2)/200*(100-beta(3)-beta(4)))','beta','x');
beta=nlinfit(x,y,myfunc,[0.5 1 20 20]);
q=beta(1),tan=beta(2),s3=beta(3),s4=beta(4)
%test the model
xx=min(x):max(x);
yy=q*sqrt(3)*0.5*erf(sqrt(pi)*tan*x/200)-q*sqrt(3)*0.5*erf(sqrt(pi)*tan/200*(100-beta(3)-beta(4)));
plot(x,y,'o',x,yy,'r')
希望有帮助!!!
上传的图像
文件类型: jpg qqqq.jpg (8.7 KB, 3 次查看)
TTT_IOU 当前离线   回复时引用此帖