正文

时间系列分析之(自适应过滤法)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:不知道为什么结果总不对~~

阅读(5638) | 评论(4)


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

评论

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