24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2027  |  回复: 9

flyeagle00

木虫 (正式写手)

小木虫

[求助] 请教如何回归参数,拟合公式是分段函数?已有2人参与

问题:已知曲线f~t, 和拟合公式,拟合公式是分段函数, 求拟合公式里待定参数?
比如matlab里inline或lsqcurvefit函数可以实现曲线回归,但是对于拟合公式是分段函数的形式该如何编写程序?谢谢解答
不是分段函数可以如下来实现。
clear all
mu=inline('0.097/248+0.097/beta(1)*(1-exp(-beta(1)/beta(2)*t))','beta','t');
t=[0        0.17        0.33        0.67        1        2        4        8        12        24        36        48        60        72        84        96        108        120        132        144        156        168        168        168.17        168.33        168.67        169        170        172        176        180        192        204        216        228        240        252        264        276        288        300        312        324        336
];
y=[0.000195        0.00042        0.00056        0.000695        0.000775        0.00097        0.001155        0.001315        0.00145        0.0015        0.001655        0.00169        0.00178        0.00179        0.001825        0.001835        0.001845        0.0019        0.001965        0.001985        0.002075        0.00212        0.002345        0.002745        0.002935        0.003115        0.003285        0.003445        0.003595        0.003735        0.003865        0.003985        0.004095        0.004195        0.00428        0.00431        0.00449        0.004515        0.00454        0.004555        0.004565        0.004575        0.00458        0.00458
];
beta0=[ 100  1000 ];
[beta,r]=nlinfit(t,y,mu,beta0  );
beta
plot(t,y,'rp');
y1=0.097/248+0.097/beta(1)*(1-exp(-beta(1)/beta(2)*t));
hold on
plot(t,y1,'b+-')
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : 问题.doc
  • 2015-08-27 22:27:51, 51 K

» 猜你喜欢

事繁勿慌,事闲勿荒,有言必信,无欲则刚,和若春风,肃若秋霜,取象于钱,外圆内方
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

matlab编程

禁虫 (小有名气)

本帖内容被屏蔽

2楼2015-08-28 00:05:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

【答案】应助回帖


感谢参与,应助指数 +1
flyeagle00: 金币+1, 有帮助 2015-08-28 14:24:43
还是用最小二乘法!
就是系数矩阵规模可能较大!
善恶到头终有报,人间正道是沧桑.
3楼2015-08-28 08:48:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
flyeagle00: 金币+50, ★★★很有帮助, 谢谢,请问软件能分享一下吗 2015-08-28 14:24:24
1stOpt拟合:
CODE:
Function y=if(x<168,0.097/248+0.097/p1*(1-exp(-p1*x/p2)),0.193/229+0.193/p1*(1-exp(-p1*x/p2)));
Data;
0        0.000195
0.17        0.00042
0.33        0.00056
0.67        0.000695
1        0.000775
2        0.00097
4        0.001155
8        0.001315
12        0.00145
。。。。

Root of Mean Square Error (RMSE):0.00053117761646034
Sum of Square Error:1.24145850500535E-5
Correlation Coef. (R): 0.952603849622092
R-Square: 0.907454094314828
Determination Coef. (DC): 0.854457197552128
Chi-Square: 0.00413271275566929
F-Statistic: 288.574902321555

Parameter        Best Estimate
----------        -------------
p1        43.4005751213438
p2        7756.71840625649
请教如何回归参数,拟合公式是分段函数?
c1.jpg

4楼2015-08-28 09:31:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

flyeagle00

木虫 (正式写手)

小木虫

引用回帖:
3楼: Originally posted by wurongjun at 2015-08-28 08:48:06
还是用最小二乘法!
就是系数矩阵规模可能较大!

能帮忙看一下程序如何改吗?
事繁勿慌,事闲勿荒,有言必信,无欲则刚,和若春风,肃若秋霜,取象于钱,外圆内方
5楼2015-08-28 19:09:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

flyeagle00

木虫 (正式写手)

小木虫

引用回帖:
4楼: Originally posted by dingd at 2015-08-28 09:31:03
1stOpt拟合:

Function y=if(x<168,0.097/248+0.097/p1*(1-exp(-p1*x/p2)),0.193/229+0.193/p1*(1-exp(-p1*x/p2)));
Data;
0        0.000195
0.17        0.00042
0.33        0.00056
0.67        0.000695
1        0.000775
2        0.00097 ...

再请问一下,分段函数分三段以上,怎么表示,中间也是用逗号?

Function y=if(x<168,0.097/248+0.097/p1*(1-exp(-p1*x/p2)),168<=x<336,0.002+(0.193-0.097)/229+(0.193-0.097)/p1*(1-exp(-p1*(x-168)/p2)),x>=336,0.004+(0.259-0.193)/205+(0.259-0.193)/p1*(1-exp(-p1*(x-336)/p2))+(0.259-0.226)*(x-336)/20);
Data;
0.00 0.000195
0.17 0.00042
0.33 0.00056
0.67 0.000695
1.00 0.000775
2.00 0.00097
4.00 0.001155
8.00 0.001315
12.00 0.0015
24.00 0.0015
60.00 0.00178
72.00 0.00179
84.00 0.001825
96.00 0.001835
108.00 0.001845
120.00 0.0019
132.00 0.001965
144.00 0.001985
156.00 0.002075
167.00 0.00212
168.00 0.00212
168.01 0.002345
168.17 0.002745
168.33 0.002935
168.67 0.003115
169.00 0.003285
170.00 0.003595
172.00 0.003595
176.00 0.003735
180.00 0.003865
192.00 0.003985
204.00 0.004095
216.00 0.004195
228.00 0.00428
240.00 0.00431
252.00 0.00449
264.00 0.004515
276.00 0.00454
288.00 0.004555
300.00 0.004565
312.00 0.004575
336.00 0.00458
336.01 0.004875
336.17 0.00526
336.50 0.00614
337.17 0.006775
338.17 0.00795
事繁勿慌,事闲勿荒,有言必信,无欲则刚,和若春风,肃若秋霜,取象于钱,外圆内方
6楼2015-08-29 09:33:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

引用回帖:
6楼: Originally posted by flyeagle00 at 2015-08-29 09:33:25
再请问一下,分段函数分三段以上,怎么表示,中间也是用逗号?

Function y=if(x<168,0.097/248+0.097/p1*(1-exp(-p1*x/p2)),168<=x<336,0.002+(0.193-0.097)/229+(0.193-0.097)/p1*(1-exp(-p1*(x-168) ...

Function y=if(x<168,0.097/248+0.097/p1*(1-exp(-p1*x/p2)),if((x>=168)and(x<336),0.002+(0.193-0.097)/229+(0.193-0.097)/p1*(1-exp(-p1*(x-168)/p2)),0.004+(0.259-0.193)/205+(0.259-0.193)/p1*(1-exp(-p1*(x-336)/p2))+(0.259-0.226)*(x-336)/20));
Data;
0.00 0.000195
0.17 0.00042
0.33 0.00056
0.67 0.000695
1.00 0.000775
.....
7楼2015-08-29 14:02:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1340385814

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by wurongjun at 2015-08-28 08:48:06
还是用最小二乘法!
就是系数矩阵规模可能较大!

我想问一下,用最小二乘法怎么实现分段拟合,三段曲线的拟合问题。圆弧、直线、圆弧三段曲线拟合  分开拟合的时候在分段点的连续问题。
8楼2016-12-08 08:56:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wurongjun

专家顾问 (职业作家)

引用回帖:
8楼: Originally posted by 1340385814 at 2016-12-08 08:56:53
我想问一下,用最小二乘法怎么实现分段拟合,三段曲线的拟合问题。圆弧、直线、圆弧三段曲线拟合  分开拟合的时候在分段点的连续问题。...

可以用B-样条函数拟合!
具体参考《计算机辅助几何设计》
善恶到头终有报,人间正道是沧桑.
9楼2016-12-08 11:27:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1340385814

新虫 (初入文坛)

引用回帖:
9楼: Originally posted by wurongjun at 2016-12-08 11:27:57
可以用B-样条函数拟合!
具体参考《计算机辅助几何设计》...

好的
10楼2017-05-08 09:23:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 flyeagle00 的主题更新
信息提示
请填处理意见