作业帮 > 综合 > 作业

matlab中使用lsqcurvefit函数拟合老是报错,

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 01:58:29
matlab中使用lsqcurvefit函数拟合老是报错,
我的自变量t和因变量H都是1*4748的数据,现在我想用函数H=abc(1)*t+abc(2)+abc(3)*sin(abc(4)*t+abc(5))利用最小二乘拟合出5个参数abc(i),我看了matlab里面的帮助写的程序老是报错,
请尽量写得详细一些,我matlab水平太次
首先建立以个函数文件,代码如下面两行,保存到工作空间,文件名一定要是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=[1955926487531178691148882141011380817 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')
说明:写得很罗嗦,也挺乱的,将就着看吧