声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1250|回复: 5

[综合讨论] Matlab拟合函数问题

 关闭 [复制链接]
发表于 2008-1-24 13:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
t = [ 22, 50, 73, 78, 104, 131, 156, 179, 204, 228, 251, 31, 64, 94, 125, 152, 178, 203, 228, 253]
y = [ .7857143, 1.785714, 2.785714, 3.785714, 4.785714, 5.785714, 6.785714, 7.785714, 8.785714, 9.785714, 10.78571, .9393939, 1.939394, 2.939394, 3.939394, 4.939394, 5.939394, 6.939394, 7.939394, 8.939394]
%上面为数组,下面为拟合代码

myfunc=inline('beta(1)*t^2+beta(2)*t+b(3)*exp(-beta(4)/t)','beta','t');
beta=nlinfit(t,y,myfunc,[1 1 1 1])
a=beta(1),k1=beta(2),k2=beta(3),m=beta(4)
%test the model
tt=0:1:255
yy=a*tt^2+k1*tt+k2*exp(-m/tt)
plot(t,y,'o',tt,yy,'r')

拟合总是出错,是不是我的拟合模型选择有问题,还是我的代码写的有问题,希望大虾们可以附上代码,另外对于非线性拟合还有什么好的拟合函数可以多建议几个,我的7.0版本
回复
分享到:

使用道具 举报

发表于 2008-1-24 14:38 | 显示全部楼层

回复 楼主 的帖子

??? Error using ==> nlinfit at 114
The inline model function generated the following error:
Error using ==> inlineeval at 15
Error in inline expression ==> beta(1)*t^2+beta(2)*t+b(3)*exp(-beta(4)/t)
??? Error using ==> mpower
Matrix must be square.


出错提示如上.

应该是beta=nlinfit(t,y,myfunc,[1 1 1 1])
有问题
发表于 2008-1-24 15:38 | 显示全部楼层
希望楼主发帖前,先看看会员守则
 楼主| 发表于 2008-1-25 12:05 | 显示全部楼层
楼上的各位高手,能不能帮我把这个问题解决了,本人不胜感激,最好可以附上代码!
发表于 2008-1-25 12:12 | 显示全部楼层


居然无视论坛的有关规定,此贴关闭处理。再发的话,必定禁言
发表于 2008-1-25 15:30 | 显示全部楼层
这个问题用1stOpt求解可能更好。
当然,你也可以用lsqcurvefit试试。
另:你的程序存在明显问题,如:beta(3)写成了b(3),以及向量没有用“点”运算。
我用lsqcurvefit拟合了一下,可以实现:
z.jpg

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 15:28 , Processed in 0.059106 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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