24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2390  |  回复: 5

zhangholmes

至尊木虫 (著名写手)

逍遥门主

[求助] 怎样用一组参数同时拟合两个曲线--matlab

各位大侠,小弟由于研究需要,要进行参数估计,遇到了一个难题:怎样把涉及到2条曲线的同一组参数估计出来,请各位大侠鼎力相助。方法是先用fmincon函数拟合,得到的结果作为lsqnonlin函数的初值进行运算,最后得到参数值。请大侠能给我编程的m文件最好。
a0=[1 1 1 1 1 1 1 1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1];  %参数初值
lb=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
ub=[+inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf +inf]; %参数上下限
x=[0.51333,0.48393,0.45268,0.42557,0.40512,0.38257,0.36301,0.34194,0.32613,0.31155,0.29826,0.28502,0.27131,0.25321,0.23865,0.21536,0.19563,0.17771];
y1=[0.50536,0.52537,0.54375,0.56052,0.57522,0.59563,0.61684,0.63566,0.64712,0.65980,0.67163,0.68357,0.69210,0.70533,0.71154,0.71536,0.71907,0.72182];
y2=[2.53630,2.19802,1.89159,1.59469,1.35026,1.14236,0.93376,0.78531,0.66720,0.58129,0.49402,0.41640,0.34402,0.27812,0.23651,0.18564,0.15012,0.12590];
%y1,y2对应两条曲线r1,r2的实验值
k1=a (1).*exp ((-a(8).*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (9))./4098.802);
k2=a (2).*exp ((-a(8).*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (10))./4098.802);
k3=a (3).*exp ((-a(8).*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (11))./4098.802);
k4=a (4).*exp ((-a(8)*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (12))./4098.802);
k5=a (5).*exp ((-a(8)*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (13))./4098.802);
k6=a (6).*exp ((-a(8)*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (14))./4098.802);
k7=a (7).*exp ((-a(8)*exp (-a(16)./4098.802).*((0.133+0.173*x)./(0.483-0.346*x))-a (15))./4098.802); %要求的参数是a(1)-a(16)这16个参数
r1=-(x.*k1.*k2.*k3.*(-k5-k7))./(-(x.*k1.*k2-k3.*(-x.*k1-k2-x.*k4-k6)).*(-k5-k7)-x.*k3.*k4.*(-x.*k1+k7));
r2=-(x^2).*k1.*k3.*k4.*k5./((x.*k1.*k2-k3.*(-x.*k1-k2-x.*k4-k6)).*(-k5-k7)-x.*k3.*k4.*(-x.*k1+k7));
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

探索真理比占有真理更可贵
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
zhangholmes: 金币+10, 有帮助 2013-01-18 09:40:17
内容已删除

» 本帖已获得的红花(最新10朵)

2楼2013-01-16 11:09:19
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

zhangholmes

至尊木虫 (著名写手)

逍遥门主

送鲜花一朵
引用回帖:
2楼: Originally posted by dingd at 2013-01-16 11:09:19
用1stOpt倒是很方便,关键是不依赖初值,只是你的模型似乎可以化简,否则有过拟合现象,参数组值难以唯一:

ConstStr For(i=1:7)(k=a*exp((-a*exp (-a/4098.802)*((0.133+0.173*x)/(0.483-0.346*x))-a)/4098.802 ...

您好,我按您给的代码试了一下,提示函数表达式定义有错,是什么原因呢,我用的是1.5版本的
探索真理比占有真理更可贵
3楼2013-01-16 13:30:11
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

如果用的是非正版软件,就无法保证了。
4楼2013-01-16 14:02:18
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

zhangholmes

至尊木虫 (著名写手)

逍遥门主

引用回帖:
4楼: Originally posted by dingd at 2013-01-16 14:02:18
如果用的是非正版软件,就无法保证了。

但提示的是函数表达定义式有错,就是说是函数格式的问题。由于我要做很多次拟合,所以没办法。我还是想用matlab,或者能解决这个函数表达式的错误。谢谢
探索真理比占有真理更可贵
5楼2013-01-17 09:59:10
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

zhangholmes

至尊木虫 (著名写手)

逍遥门主

引用回帖:
4楼: Originally posted by dingd at 2013-01-16 14:02:18
如果用的是非正版软件,就无法保证了。

冒昧问一句,您用的是哪个版本的,是否可以传一个给我,不胜感激
探索真理比占有真理更可贵
6楼2013-01-17 10:00:43
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhangholmes 的主题更新
信息提示
请填处理意见