,我必须在数据上实现一个滑动窗口算法,并在循环内部进一步执行操作,下面我已经编写了代码,滑动窗口适用于前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
提前致谢
答案 0 :(得分:1)
问题在于您尚未清除变量。
在下半部分,您正在尝试使用单个自动回归模型来匹配样本的所有,即使函数已经中途改变了。
如果您将样品限制在新样品中,它应该可以更好地工作。
变化:
theta = (phi'* phi)\phi'*y';
到
phi2 = phi(501:end,:);
y2 = y(501:end);
theta = (phi2'* phi2)\phi2'*y2';