matlab 非线性最小二乘拟合 100
我的数据据点:y=[5999256989554235314156424610786608866970646056310161316];x=[1997:1:2007];预测...
我的数据据点:
y = [59992 56989 55423 53141 56424 61078 66088 66970 64605 63101 61316];
x = [1997:1:2007];
预测的函数表达式y = Asin(Bx)+C
如何利用已知点求出拟合参数,并且画出图像 展开
y = [59992 56989 55423 53141 56424 61078 66088 66970 64605 63101 61316];
x = [1997:1:2007];
预测的函数表达式y = Asin(Bx)+C
如何利用已知点求出拟合参数,并且画出图像 展开
1个回答
展开全部
% 1、拟合和很多因素有关,比如初值、拟合函数的选择、算法设置等。
% 2、从结果看,效果还算不错(但需要注意,这是在精心选择参数估值的条件下才做到的)。
% 3、目前得到的结果是:A = -6.2476e+003,B = 0.6293,C = 6.0501e+004。
y = [59992 56989 55423 53141 56424 61078 66088 66970 64605 63101 61316];
x = [1997:1:2007];
f = inline('c(1)*sin(c(2)*x)+c(3)','c','x');
opt = optimset('TolFun',1e-15);
c = lsqcurvefit(f, [-7000 .628 6e4], x, y,[],[],opt);
A = c(1)
B = c(2)
C = c(3)
% 把拟合结果与原始数据对照
plot(x,y, '-o', x, f(c, x), 'r:x');
legend('原始数据', '拟合函数',0)
% 2、从结果看,效果还算不错(但需要注意,这是在精心选择参数估值的条件下才做到的)。
% 3、目前得到的结果是:A = -6.2476e+003,B = 0.6293,C = 6.0501e+004。
y = [59992 56989 55423 53141 56424 61078 66088 66970 64605 63101 61316];
x = [1997:1:2007];
f = inline('c(1)*sin(c(2)*x)+c(3)','c','x');
opt = optimset('TolFun',1e-15);
c = lsqcurvefit(f, [-7000 .628 6e4], x, y,[],[],opt);
A = c(1)
B = c(2)
C = c(3)
% 把拟合结果与原始数据对照
plot(x,y, '-o', x, f(c, x), 'r:x');
legend('原始数据', '拟合函数',0)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询