matlab初学者问题

matlab初学者请教各位关于matlab的简单问题 大致就是在一个有三十个数据的序列中 自第九个数开始 分别按照1、以前历史期数的平均值的方法,2、以前最近一期的数据构建random walk模型 两种方式预测本期数值,将预测数值与实际数值画在一个图内,并计算MAFE和MSFE。测试数值范围为y序列中的第九个值到第二十八个值
以下是现在自己写的代码
y=[.4 .1 -.1 .4 .2 .2 .2 .2 .8 .6 .6 0 .9 .6 .8 .4 .6 .7 .1 .3 .7 .6 .4 -2.3 2.3 .8 .9 .8 1.3 1]';
T=length(y)-2;t=[1:T]';T0=9;h=1;
truey=y(T0:T);b=1;
yhmhat=zeros(20,1);yrwhat=zeros(20,1);
for t=T0:T
yhmhat(t-T0+1)=(sum(y(1:(t-1),1)))/(t-1);
yrwhat(t)=by(t-1)+brandn
end
yhmhat
x=1:20;
plot(x,yhmhat)
hold on
plot(x,truey)
hold off
MAFEhm=mean(abs(yhmhat-truey))
MSFEhm=mean((yhmhat-truey).^2)
yrwhat
yrwhat(any(yrwhat,2)==0,:)=[]
plot(x,yrwhat)
hold on
plot(x,truey)
hold off
MAFErw=mean(abs(yrwhat-truey))
MSFErw=mean((yrwhat-truey).^2)

现在的问题是我这里预测出的yrwhat出来数据是281的矩阵,我现在用yrwhat(any(yrwhat,2)==0,:)=[]的命令强行删除了前八行为0的数据以后返回为201的矩阵完成画图,请问这种方法是否正确?有没有其他的方法让yrwhat出来以后可以直接是201的矩阵呢?
我曾经试过用yrwhat(t-T0+1)=by(t-T0)+brandn,但是报错 :数组索引必须为正整数或逻辑值。
请问如何能够使以上代码中yrwhat出来直接是一个20
1的矩阵?如何解决yrwhat(t-T0+1)=by(t-T0)+b*randn中数组索引必须为正整数或逻辑值的问题?也劳烦看看以上代码其他部分有没有什么问题啊。谢谢

  1. 用yrwhat(any(yrwhat,2)==0,:)=[]的命令强行删除了前八行为0的数据以后返回为201的矩阵完成画图,请问这种方法是否正确?
    可以的,因为前八行本来就是无效数据
  2. 如何能够使以上代码中yrwhat出来直接是一个201的矩阵?如何解决yrwhat(t-T0+1)=by(t-T0)+b*randn中数组索引必须为正整数或逻辑值的问题?
    可以试试这个
for t=T0:T
    yhmhat(t-T0+1)=(sum(y(1:(t-1),1)))/(t-1);
    y_temp = [0;y];
    yrwhat(t-T0+1)=b*y_temp(t-T0+1)+b*randn;
end