matlab索引超出数组元素的数目(4),索引超出数组元素的数目(5) 怎么解决啊

这是我的代码,我在运行时,总是出现

xiaoche_1

索引超出数组元素的数目(5)。

出错 xiaoche_1 (line 47)

u_1=u(k);

有大佬知道怎么解决吗?

clear all;

close all;

e_0=0; %定义起始的误差

e_1=0;

u_0=0;

u_1=0;

y_0=0;

m_0=0;

m_1=0;

y_1=0;

y_2=0;

y_3=0;

Y_0=0;

Y_1=0;

A_0=[1,1,1]';

P_0=10^6*eye(3,3);

c=0.995;%遗忘因子

F_O=0;

for k=1:1:99

time(k)=k;

r(k)=sign(sin(0.01*pi*k));%产生方波信号

y(k)=0.091*y_0+0.91*u_1;%此处有问题

m(k)=2*m_0-m_1+y_0;

x(1,1)=0.44*y(k)-0.5*y_0+0.06*y_1;

x(2,1)=0.44*y_0-0.5*y_1+0.06*y_2;

x(3,1)=0.44*y_1-0.5*y_2+0.06*y_3;

e(k)=r(k)-y(k);

Y(k)=2*Y_0-Y_1+0.1*r(k);%此处有问题

E(k)=Y(k)-m(k);

F(k)=abs(e(k))*e(k)^2; %做过修改,+变*

F(k)=F(k)+F_O; %F_0代表前一时刻的值

F_O=F(k);

if(abs(E(k))<=1)

u(k)=A_0(1)*e(k)+A_0(2)*e_0+A_0(3)*e_1+u_1; %此处A_0代表的为cta

P_1=P_0/c-P_0*x*((c+x'*P_0*x)^(-1))*x'*P_0/c;

v(k)=0.1*u_1-0.1*u_0;

A_1=A_0+P_0*x*((c+x'*P_0*x)^(-1))*(v(k)-(x')*A_0);

A_0=A_1;

P_0=P_1;

end

y_2=y_1;

y_1=y_0;

y_0=y(k);

Y_1=Y_0;

Y_0=Y(k);

u_0=u_1;

u_1=u(k);

e_1=e_0;

e_O=e(k);

end

figure(1);

plot(time,r,'k');

xlabel('time(s)');ylabel('r');

axis([0,100,-5,5]);

figure(2);

plot(time,Y,'k');

xlabel('time(s)');ylabel('Y');

axis([0,100,-5,5]);

figure(3);

plot(time,y,'k');

xlabel('time(s)');ylabel('y');

axis([0,100,-5,5]);

figure(4);

plot(time,m,'k');

xlabel('m');ylabel('m');

axis([0,1,-100,100]);

figure(5);

plot(time,E,'k');

xlabel('time(s)');ylabel('E');

axis([0,100,-5,5]);

A_0,P_1,F(k)