搜索内容 搜索用户

# [已解决] matlab自定义函数最小二乘法数据拟合

tdc1217 发表于 2021-4-5 11:56:14
 本帖最后由 tdc1217 于 2021-4-5 12:15 编辑 f( x) = Aexp( － Bx) sin[（2pi/C)*x*exp( － Dx) + E] + F 自定义函数如图A,B,C,D,E,F为系数 x=[25,30,35,40,55,60,65,70,75,80,105,110,115,120,155,160,165,170,175] y=[2.63,1.28,1.17,1.05,0.53,1.28,1.84,1.62,1.28,1.28,1.5,1.84,1.17,1.17,1.84,1.73,1.73,1.39,0.35] 需要拟合的数据如上 求教一下大家这个要如何编程

WarnerChang 发表于 2021-4-5 16:49:26
 tdc1217 发表于 2021-4-5 15:15 x=[25,30,35,40,55,60,65,70,75,80,105,110,115,120,155,160,165,170,175]' y=[2.63,1.28,1.17,1.05,0.53 ... 你看看吧 var1=50; var2=1; x=[25,30,35,40,55,60,65,70,75,80,105,110,115,120,155,160,165,170,175]'/var1; y=[2.63,1.28,1.17,1.05,0.53,1.28,1.84,1.62,1.28,1.28,1.5,1.84,1.17,1.17,1.84,1.73,1.73,1.39,0.35]'*var2; syms t f=fittype('a*exp(-b*t)*sin((2*pi/c)*t*exp(-d*t)+e)+f','independent','t','coefficients',{'a','b','c','d','e','f'}); cfun=fit(x,y,f,'Normalize','on'); xi=[20:0.1:175]/var1; yi=cfun(xi); figure plot(xi,yi,'b-',x,y,'g*'); title('拟合函数图形');

10 条回复

## 倒序浏览

WarnerChang 发表于 2021-4-5 14:21:57
 fittype和fit函数

tdc1217 发表于 2021-4-5 15:15:01
 WarnerChang 发表于 2021-4-5 14:21 fittype和fit函数 x=[25,30,35,40,55,60,65,70,75,80,105,110,115,120,155,160,165,170,175]' y=[2.63,1.28,1.17,1.05,0.53,1.28,1.84,1.62,1.28,1.28,1.5,1.84,1.17,1.17,1.84,1.73,1.73,1.39,0.35]' syms t f=fittype('a*exp(-b*t)*sin((2*pi/c)*t*exp(-d*t)+e)+f','independent','t','coefficients',{'a','b','c','d','e','f'}); cfun=fit(x,y,f) xi=20:0.1:175; yi=cfun(xi); figure plot(xi,yi,'b-',x,y,'g*'); title('拟合函数图形'); —————————————————————————— 大神，能帮忙修改一下嘛，谢谢！

WarnerChang 发表于 2021-4-5 16:49:26
 tdc1217 发表于 2021-4-5 15:15 x=[25,30,35,40,55,60,65,70,75,80,105,110,115,120,155,160,165,170,175]' y=[2.63,1.28,1.17,1.05,0.53 ... 你看看吧 var1=50; var2=1; x=[25,30,35,40,55,60,65,70,75,80,105,110,115,120,155,160,165,170,175]'/var1; y=[2.63,1.28,1.17,1.05,0.53,1.28,1.84,1.62,1.28,1.28,1.5,1.84,1.17,1.17,1.84,1.73,1.73,1.39,0.35]'*var2; syms t f=fittype('a*exp(-b*t)*sin((2*pi/c)*t*exp(-d*t)+e)+f','independent','t','coefficients',{'a','b','c','d','e','f'}); cfun=fit(x,y,f,'Normalize','on'); xi=[20:0.1:175]/var1; yi=cfun(xi); figure plot(xi,yi,'b-',x,y,'g*'); title('拟合函数图形');

tdc1217 发表于 2021-4-6 11:31:24
 WarnerChang 发表于 2021-4-5 16:49 你看看吧 var1=50; var2=1; 非常感谢

tdc1217 发表于 2021-4-6 17:58:21
 WarnerChang 发表于 2021-4-5 16:49 你看看吧 var1=50; var2=1; 再麻烦一下，如何将系数传递出来，查看拟合的结果

WarnerChang 发表于 2021-4-6 19:15:19
 tdc1217 发表于 2021-4-6 17:58 再麻烦一下，如何将系数传递出来，查看拟合的结果 在命令行窗口输入： cfun 就好了

tdc1217 发表于 2021-4-7 11:08:20
 WarnerChang 发表于 2021-4-6 19:15 在命令行窗口输入： cfun 就好了 想问一下：1.拟合出来的系数c只有零点几和理想值四十几出入很大，要如何修改；2.和方差要怎么查询；3.每次拟合的曲线都不一样，而且拟合的出入很大，只有一俩次拟合的效果很好。麻烦了，有空帮忙解答一下.万分感谢！

WarnerChang 发表于 2021-4-7 14:02:17
 tdc1217 发表于 2021-4-7 11:08 想问一下：1.拟合出来的系数c只有零点几和理想值四十几出入很大，要如何修改；2.和方差要怎么查询；3.每 ... 1.是因为我定义了两个比例系数！否则你这个模型根本拟合不了 2.方差的话自己计算吧 3.这个问题我目前没有好办法

tdc1217 发表于 2021-4-7 15:05:02
 WarnerChang 发表于 2021-4-7 14:02 1.是因为我定义了两个比例系数！否则你这个模型根本拟合不了 2.方差的话自己计算吧 3.这个问题我目前没有 ... 好的，谢谢

mengchenl 发表于 6 天前
 mark 一下，感谢分享～
 您需要登录后才可以回帖 登录 | 注册 本版积分规则 回帖后跳转到最后一页