数据就是时间序列:
2459.40
2459.90
2453.70
2454.90
2453.80
2452.80
2452.20
2458.90
2458.30
2456.70
2457.80
2458.40
2459.30
2456.80
2459.80
2461.90
2475.30
2473.90
2474.40
2466.40
2463.60
2461.10
2461.40
2461.60
2458.80
2459.80
2456.80
2460.80
2462.60
2462.20
2462.50
2456.60
2459.10
2459.70
2461.00
2466.70
2467.20
2465.20
2467.20
2461.30
2461.50
2460.00
2460.90
2462.10
2457.90
2458.00
2455.40
2456.00
2459.50
2458.90
2461.70
2461.80
2462.50
2463.60
2462.90
2460.90
2461.10
2461.30
2463.00
2463.20
2463.60
2467.50
2469.50
2464.70
2457.90
2456.40
2455.60
只有数据 没有任何可参考公式或函数。 求能最大化拟合的函数算法 代码。
matlab 求拟合函数
答案:2 悬赏:80 手机版
解决时间 2021-04-01 05:30
- 提问者网友:ミ烙印ゝ
- 2021-03-31 19:29
最佳答案
- 五星知识达人网友:woshuo
- 2020-05-04 06:37
这只是前八个数的程序 你自己把剩下的数据加上
x=[1:8];
y=[2459.40,2459.90,2453.70,2454.90,2453.80,2452.80,2452.20,2458.90];
p=polyfit(x,y,2)
最后曲线集合结果
y=0.4595-4.6810*x+0.002465*x^2
另外还有其他拟合方法 你百度百科搜 稳健拟合
那个是我创建的
x=[1:8];
y=[2459.40,2459.90,2453.70,2454.90,2453.80,2452.80,2452.20,2458.90];
p=polyfit(x,y,2)
最后曲线集合结果
y=0.4595-4.6810*x+0.002465*x^2
另外还有其他拟合方法 你百度百科搜 稳健拟合
那个是我创建的
全部回答
- 1楼网友:荒野風
- 2019-10-16 11:01
曲线拟合的例题
1、 关于y=f(x)有一些观测数据
x=-2*pi:0.1*pi:2*pi,时
相应的函数值为
y =[ 0.0000 0.8726 1.3803 1.3876 1.0490 0.6667 0.4612
0.4365 0.4293 0.2848 -0.0000 -0.2848 -0.4293 -0.4365
-0.4612 -0.6667 -1.0490 -1.3876 -1.3803 -0.8726 0
0.8726 1.3803 1.3876 1.0490 0.6667 0.4612 0.4365
0.4293 0.2848 0.0000 -0.2848 -0.4293 -0.4365 -0.4612
-0.6667 -1.0490 -1.3876 -1.3803 -0.8726 -0.0000 ];
2、 通过plot(x,y)绘图
x = -2*pi:0.1*pi:2*pi;
y = [0.0000 0.8726 1.3803 1.3876 1.0490 0.6667 0.4612 ...
0.4365 0.4293 0.2848 -0.0000 -0.2848 -0.4293 -0.4365 ...
-0.4612 -0.6667 -1.0490 -1.3876 -1.3803 -0.8726 0 ...
0.8726 1.3803 1.3876 1.0490 0.6667 0.4612 0.4365 ...
0.4293 0.2848 0.0000 -0.2848 -0.4293 -0.4365 -0.4612 ...
-0.6667 -1.0490 -1.3876 -1.3803 -0.8726 -0.0000];
plot(x,y,'+')
hold on
plot(x,y,'g')
3、观察图形,,发现很像sin,cos那样的周期振荡函数
尝试选择拟合函数 f(x)=c1*sin(x)+c2*sin(2*x)+c3*sin(3*x)
希望选择合适的c1,c2,c3, s.t. δ=∑(f(xi)-yi)^2达到最小。
注意,这里的x,y 均是已知数构成的向量;c1,c2,c3才是待定的。
即 δ=∑(f(xi)-yi)^2=g(c1,c2,c3).
拟合问题转化为 求min{δ=g(c1,c2,c3)}
4、因为 δ=g(c1,c2,c3)是c1,c2,c3的元函数,所以可通过求偏导数
δ'c1,δ'c2,δ'c3,并令
δ'c1=0
δ'c2=0
δ'c3=0,联立解出c1,c2,c3.
5、使用matlab求解
第一步:建立m文件
function p=stu(c,x)
p=c(1)*sin(x)+c(2)*sin(2*x)+c(3)*sin(3*x);
第二步:在工作区输入,c1,c2,c3的估计值,如
c=[1 1 1]
第三步:调用
p=lsqcurvefit('stu',c,x,y)
第四步:绘图检验拟合函数与观测数据的接近程度
plot(x,y,'r+',x,p(1)*sin(x)+p(2)*sin(2*x)+p(3)*sin(3*x),'g')
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯