给出一组数据,如何用MATLAB去预测将来的数据。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了给出一组数据,如何用MATLAB去预测将来的数据。相关的知识,希望对你有一定的参考价值。
这样:
x=[1 3 5 6 8 9 10 11 12 14 15 17 19 21 23 25];
y=[10 20 42 60 73 79 80 78 73 64 56 71 51 42 41 40];
plot(x,y,'ro');
p=polyfit(x,y,4);%于是拟合出的曲线就是p(1)x^4+p(2)x^3+p(3)x^2+p(4)x+p(5),想拟合成其它次数的多项式只需将4改为相应的次数即可
f=poly2sym(p);
xinterp=[2 4 7 13 16 18 20 22 24];
yinterp=subs(f,xinterp);
hold on;
plot(xinterp,yinterp,'o');
ezplot(f,[0,30])
扩展资料:
注意事项
函数命令为:
a=polyfit(x,y,m) % x,y为对应的自变量,m为需要拟合的最高次幂
y=polyval(a,x); %根据拟合的函数得出x对应的因变量的值
函数表达形式为:f(x)=a1*x^m+...+am*x+a_m+1
polyfit(x,y,n)其中:x, y为已知数据点向量, 分别表示横、纵坐标,n为拟合多项式的次数, 结果返回m次拟合多项式系数, 从高次到低次存放在向量p中.参数p为拟合多项式 y=a1x^n+...+anx+a,共n+1个系数。
示例:
%多项式拟合
x = (0: 0.1: 7)';
y = sin(x);
p = polyfit(x,y,3) %p为拟合后的多项式系数
z=polyval(p,x);
plot(x,y,'r',x,z,'b')
其中p为拟合后的多项式系数,运行结果为:
p =0.0736 -0.7095 1.5250 -0.0296
参考技术A 问题在于你想拟合成什么函数。如果是简单的多项式函数可以用polyfit,程序如下x=[1 3 5 6 8 9 10 11 12 14 15 17 19 21 23 25];
y=[10 20 42 60 73 79 80 78 73 64 56 71 51 42 41 40];
plot(x,y,'ro');
p=polyfit(x,y,4);%于是拟合出的曲线就是p(1)x^4+p(2)x^3+p(3)x^2+p(4)x+p(5),想拟合成其它次数的多项式只需将4改为相应的次数即可
f=poly2sym(p);
xinterp=[2 4 7 13 16 18 20 22 24];
yinterp=subs(f,xinterp);
hold on;
plot(xinterp,yinterp,'o');
ezplot(f,[0,30])
追问
x=[1 3 5 6 8 9 10 11 12 14 15 17 19 21 23 25];
y=[10 20 42 60 73 79 80 78 73 64 56 71 51 42 41 40];
plot(x,y,'ro');
在这个的基础上,没有数据的情况下,在拟合一条。就是要用到CFTOOL命令工具。谢谢
如何用matlab做正弦曲线拟合
我只知道能用polyfit做二项式拟合
比如有一组数据,数据大概是正弦曲线,但每个周期都不一样,应该怎么样做
请不要发这种象一楼一样的不相干的垃圾信息,谢谢
<br>>>cftool
<br>【2】出现对话框,点击data选x和y
<br>【3】creat data set,然后close
<br>【4】点击fitting,在type of type,选Fourier
<br>选择一个合适的即可。
例如:
>> x=0:0.1:pi
>> y=sin(x+x.^2)
>> plot(x,y,'o-')
用非线性回归,得到
得到
General model Sin8:
f(x) =
a1*sin(b1*x+c1) + a2*sin(b2*x+c2) + a3*sin(b3*x+c3) +
a4*sin(b4*x+c4) + a5*sin(b5*x+c5) + a6*sin(b6*x+c6) +
a7*sin(b7*x+c7) + a8*sin(b8*x+c8)
Coefficients (with 95% confidence bounds):
a1 = 4.36 (-2.007e+010, 2.007e+010)
b1 = 1.643 (-1.371e+009, 1.371e+009)
c1 = 0.4803 (-2.517e+009, 2.517e+009)
a2 = 4.282 (-3.806e+006, 3.806e+006)
b2 = 5.715 (-8.181e+004, 8.182e+004)
c2 = -4.306 (-7.305e+004, 7.305e+004)
a3 = 3.823 (-3.826e+006, 3.826e+006)
b3 = 5.867 (-6.623e+004, 6.624e+004)
c3 = -7.586 (-6.24e+004, 6.238e+004)
a4 = 2.67 (-1.363e+014, 1.363e+014)
b4 = 7.29e-006 (-5.336e+011, 5.336e+011)
c4 = -0.8273 (-5.575e+013, 5.575e+013)
a5 = 2.006 (-2.405e+014, 2.405e+014)
b5 = 0.5948 (-1.429e+013, 1.429e+013)
c5 = -0.5683 (-8.375e+013, 8.375e+013)
a6 = 1.729 (-2.606e+014, 2.606e+014)
b6 = 0.5869 (-1.455e+013, 1.455e+013)
c6 = -0.5213 (-8.638e+013, 8.638e+013)
a7 = -2.189 (-1.781e+009, 1.781e+009)
b7 = 2.225 (-1.048e+008, 1.048e+008)
c7 = -0.8675 (-2.948e+008, 2.948e+008)
a8 = 1.225 (-1.956e+014, 1.956e+014)
b8 = 0.616 (-4.375e+012, 4.375e+012)
c8 = -0.03419 (-1.33e+014, 1.33e+014)
Goodness of fit:
SSE: 0.01188
R-square: 0.9992
Adjusted R-square: 0.9968
RMSE: 0.03854本回答被提问者采纳
以上是关于给出一组数据,如何用MATLAB去预测将来的数据。的主要内容,如果未能解决你的问题,请参考以下文章