数据过界了。
具体意思就是如果数组只有100个,但是你在程序中使用了第101个数据,就会出现这样的错误。
对于这个问题的解决办法如下,你先找到错误的行数,看看这行中的数组长度最大值是多少,再看看实际调用的时候用了哪个最大值,是不是超过了长度最大值。
这种错误一般出现在for的情况下。
个人拙见。
while (ts<80000 && Kn <= 0.05 && abs((abs(IOut)-abs(IIn))./abs(IIn)))<1e-6 || ts<100
%%%%%%%%%%%%%%%%%%%%%%
改成:while ((ts<80000 && Kn <= 0.05 && (abs((abs(IOut)-abs(IIn))./abs(IIn)))<1e-6) ||(ts<100))
IEq = zeros(1,lx,ly);
%%%%%%%%%%%%%%%%%%%%%%%
改成:IEq = zeros(8,lx,ly);
%%%%%%%%%%%%%%%
运行后可以出结果。
运行了一下 问题在这里
IEq (i,:,:) = IEq(i,:,:)+ reshape(t*reshape(IIn,8,lx*ly),1,lx,ly); % equilibrinm
PDFs
你的IEq是1*51*51的cell
而你的 for i=1:8 当 i是二的时候 那么就会访问IEq(2,*,*)
这个东西是不存在的 造成了越界错误。。。具体你自己调试吧 也不知道你的程序是干嘛的 外人不好调