在Matlab中滑动窗口

时间:2014-03-21 08:48:57

标签: algorithm matlab

,我必须在数据上实现一个滑动窗口算法,并在循环内部进一步执行操作,下面我已经编写了代码,滑动窗口适用于前500个样本,我们得到正确的估计但是当我们改变了这个功能,估计似乎是错误的。

   clc 
   clear all
   close all
   x=rand(1,1000);
   y(2)=2;
   y(3)=4;
   y(4)=5;
   for k=4:1:501
       for i=k:1:k+10  
           y(i)=1.98*y(i-1)-1.284*y(i-2)+0.272*y(i-3)+4*x(i-1)+6*x(i-2)+8*x(i-3);
           phi(i,:)=[ -y(i-1) -y(i-2) -y(i-3) x(i-1) x(i-2) x(i-3) ];
       end
       theta = (phi'* phi)\phi'*y';
       thetaest(:,k)=theta;
   end
   for k=501:1:991
       for i=k:1:k+10  
         y(i)=1.38*y(i-1)-0.576*y(i-2)+0.068*y(i-3)+4*x(i-1)+6*x(i-2)+8*x(i-3);
         phi(i,:)=[ -y(i-1) -y(i-2) -y(i-3) x(i-1) x(i-2) x(i-3) ];
       end
       theta = (phi'* phi)\phi'*y';
       thetaest(:,k)=theta;
   end

提前致谢

1 个答案:

答案 0 :(得分:1)

问题在于您尚未清除变量。

在下半部分,您正在尝试使用单个自动回归模型来匹配样本的所有,即使函数已经中途改变了。

如果您将样品限制在新样品中,它应该可以更好地工作。

变化:

   theta = (phi'* phi)\phi'*y';

   phi2 = phi(501:end,:);
   y2 = y(501:end);
   theta = (phi2'* phi2)\phi2'*y2';