我现在有组数据想进行正弦拟合,我用MATLAB试了下感觉出不来效果,故求助。
x=[200909,200910,200911,200912,201001,201002,201003,201004,201005,201006,201007,20100...
x=[200909,200910,200911,200912,201001,201002,201003,201004,201005,201006,201007,201008];
y=[8333.24106,8090.87469,12126.11429,17240.10666,30591.62483,30228.72412,27215.59302,16534.14786,10942.28059,7906.485189,8347.272104,8088.076];
想用y=a*sin(b*x+c)+d拟合,谢谢啦,各位大侠帮帮忙。得出a,b,c,d的值。 展开
y=[8333.24106,8090.87469,12126.11429,17240.10666,30591.62483,30228.72412,27215.59302,16534.14786,10942.28059,7906.485189,8347.272104,8088.076];
想用y=a*sin(b*x+c)+d拟合,谢谢啦,各位大侠帮帮忙。得出a,b,c,d的值。 展开
2个回答
展开全部
用lsqcurvefit函数,可看help
f=inline('c(1)*sin(c(2)*x+c(3))+c(4)','c','x');
c=lsqcurvefit(f,[0,0,0,0],x,y);
c1-c4分别代表a,b,c,d
f=inline('c(1)*sin(c(2)*x+c(3))+c(4)','c','x');
c=lsqcurvefit(f,[0,0,0,0],x,y);
c1-c4分别代表a,b,c,d
追问
您好,请问下你用以上代码能运行出来结果吗?如果出来结果的话是什么样子的?
追答
能运行出来。建议你把y2先除以1000,这样不至于d占的比重太大, 然后最重要的是要选择好合适的初始值,比如[1;1;1;1]就比[0;0;0;0]的效果要好
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询