正文

时间系列分析之(自适应过滤法)2006-10-22 10:40:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/elva6401/19606.html

分享到:

#include <iostream.h>

#include <math.h>

#include <fstream.h>

ifstream fin("in.txt");

 

int main()

{

       int n; //数据个数

       float x[100],xx;  //数据,xx为预测值

       int p;  //自回归模型的阶数

       float k; //设定的k

       float a[100];  //自回归系数

       float mse1=0,mse2=0; //方差,差额小于1%程序结束

       int i,j;

 

       fin>>n;

       for(i=0;i<n;i++)

              fin>>x[i];

       fin>>p>>k;

       for(i=0;i<p;i++)

              fin>>a[i];

 

       while(1)

       {

              mse1=0;

              for(i=p;i<n;i++)

              {

                     xx=0;

                     for(j=0;j<p;j++)

                            xx+=a[j]*x[i-j-1];

                     for(j=0;j<p;j++)

                            a[j]+=2*k*(x[i]-xx)*x[i-j-1];

                     mse1+=(x[i]-xx)*(x[i]-xx);

              }           

              mse1=sqrt(mse1/(n-p-1));

              if(mse2!=0)

              {

                     if(mse1/mse2>0.99 && mse1/mse2<1.01)

                            break;

                     mse2=mse1;

              }

       }

       for(i=0;i<p;i++)

              cout<<a[i]<<” “;

       cout<<endl;

       cin>>n;

 

}

 

 

测试数据:

10

3.21  2.65  4.12  4.3  4.72  4.19  3.85  2.52  3.91  3.36

2  0.5

0.5  0.5

 

 

测试数据II:

20

4.2        5.8  6.9  7.62  5.57  3.34  2  1.7  2.02  2.71

3.63        5.18  7.11  8.26  7.96  6.78  5.07  5.04  6.02  7.61

2         0.008

1.2       -0.55

 

结果应该是:

1.402  0.3

 

PS:不知道为什么结果总不对~~

阅读(5463) | 评论(4)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册