matlab报位置索引超过数组边界的错误,应如何解决

运行结果及报错内容
yt = xlsread('a01.xlsx','B3:F26');   %yt为一个24×5的矩阵数据
data = yt;
n=length(yt(1,:));
alpha=0.3;   % alpha大小,可以根据数据特点自行设定
n=length(data(24,:));
st1_0=yt(1); st2_0=st1_0;st3_0=st1_0;  
st1=alpha*yt(1)+(1-alpha)*st1_0; 
st2=alpha*st1(1)+(1-alpha)*st2_0; 
st3=alpha*st2(1)+(1-alpha)*st3_0;

m = 0;
data = cell(24,5);
for j = 1:24
m = 1 + m;
    for i=2:n+3
            if i>n
                data=[data(m,:),yhat];
            end
            st1=alpha*yt(i)+(1-alpha)*st1;    
            st2=alpha*st1+(1-alpha)*st2; 
            st3=alpha*st2+(1-alpha)*st3;
            a=3*st1-3*st2+st3; 
            b =0.5*alpha/(1-alpha)^2*((6-5*alpha)*st1-2*(5-4*alpha)*st2+(4-3*alpha)*st3);
            c=0.5*alpha^2/(1-alpha)^2*(st1-2*st2+st3);
            yhat = a+b+c;
    end
end

为什么m的数值不能超过1

img

我想要达到的结果

data=[data(m,:),yhat];
如何才能得到所有行的数据

img

奇怪的代码,yhat是什么,它还没有声明就被调用了,你的第11行想要做什么,要拼接吗