超出索引范围是为什么

这个工作区怎么看,超出索引范围了(像图片里这样),接下来我应该怎么调试呢,真的麻烦了,还需要大家的帮助

问题相关代码,请勿粘贴截图

nx=10;
nt=20000;
tmax=10;r=1;
%计算步长
dx=r/(nx-1);
T=tmax/(nt-1);
.
.
.
.(省略了中间程序)
tshort=linspace(0,tmax,nt/100);
qxshort=zeros(nx,nt/100);
qyshort=zeros(nx,nt/100);
qzshort=zeros(nx,nt/100);

dqxshort=zeros(nx,nt/100);
dqyshort=zeros(nx,nt/100);
dqzshort=zeros(nx,nt/100);

vxshort=zeros(nx,nt/100);
vyshort=zeros(nx,nt/100);
vzshort=zeros(nx,nt/100);

dvxshort=zeros(nx,nt/100);
dvyshort=zeros(nx,nt/100);
dvzshort=zeros(nx,nt/100);
for j=1:nt/100
for i=1:nx
qxshort(i,j)=qx(i,j100); %Using true y(i,j)
qyshort(i,j)=qy(i,j
100);
qzshort(i,j)=qz(i,j*100);

    dqxshort(i,j)=dqx(i,j*100);   %Using true dy(i,j)
    dqyshort(i,j)=dqy(i,j*100);
    dqzshort(i,j)=dqz(i,j*100);
    
    vxshort(i,j)=vx(i,j*100);     %Using true y(i,j)
    vyshort(i,j)=vy(i,j*100); 
    vzshort(i,j)=vz(i,j*100); 
    
end

end

img

img

img

第325行加一句

disp(i) %或直接敲个i
disp(j) %或直接敲个j打印查看j当前值

如果j超出19999,即使是20000也是超出范围,dqx是10行19999列,同理如果i>10也是

打个比方
list = [1, 2, 3]
list的元素有三个,索引(下标)从
0到2,这是如果你调用list[3]就会报错
因为list[3]已经超出了列表的长度(范围)
和你的报错同理,检查自己的调用是不是超出
范围了

下标超出了,你列表里面没有这个下标