matlab中使用lsqcurvefit函数拟合老是报错,求高手帮忙

我的自变量t和因变量H都是1*4748的数据,现在我想用函数H=abc(1)*t+abc(2)+abc(3)*sin(abc(4)*t+abc(5))利用最小二乘拟合出5... 我的自变量t和因变量H都是1*4748的数据,现在我想用函数H=abc(1)*t+abc(2)+abc(3)*sin(abc(4)*t+abc(5))利用最小二乘拟合出5个参数abc(i),我看了matlab里面的帮助写的程序老是报错,希望高手帮忙~
请尽量写得详细一些,我matlab水平太次
展开
 我来答
zhling113
2013-12-17 · TA获得超过123个赞
知道答主
回答量:51
采纳率:0%
帮助的人:34.8万
展开全部
首先建立以个函数文件,代码如下面两行,保存到工作空间,文件名一定要是fun(因为下面的函数文件我命名为fun了)

function H=fun(abc,t)
H=abc(1)*t+abc(2)+abc(3)*sin(abc(4)*t+abc(5));

接着是主程序,包括下面全部,改一下数据,

%下面是数据,我这里是随便写的
t=linspace(0, 3 , 11);
H=[195 59 264 875 3117 8691 14888 21410 11380 817 9];

%matlab拟合的初值选择是一个麻烦的问题
abc0=[2.9 0.2 2 4 5];%这是abc的5个初值,得根据你的问题选取,我这里也是随便取的,
A=lsqcurvefit(@fun,abc0,t,H);

%下面你可以画一个图形做拟合对比
f=fun(A,t);
plot(t,f,'r',t,H,'*-b')

说明:写得很罗嗦,也挺乱的,将就着看吧
qingningleyun
2013-12-17 · TA获得超过5852个赞
知道大有可为答主
回答量:2991
采纳率:30%
帮助的人:3028万
展开全部
%t = [1 2 3 5 7 10 14 20 25 30 36 40 42 45]; % t,H 换成自己的数据
%H = [18 17 16 15 13 11 9 8 6 5 3 2 1 0];
fun = @(a,t) a(1)*t+a(2)+a(3)*sin(a(4))*t+a(5);
a0 = [1 1 1 1 1];
a = lsqcurvefit(fun,a0,t,H);
tt = min(t):.1:max(t);
HH = fun(a,tt);
hold on;
plot(t,H,'bo');
plot(tt,HH,'r-');
hold off;
legend('原始数据','拟合曲线');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式