matlab中for循环为什么会超出最大上限?

例如我在编写以下代码时:

            for j=1:length(sway{i})
                if bidprice(bidprice==sway{i}(j))>maxprice(i,sway{i}(j))
                    sway{i}(j)=[];
                end
            end

出现↓

索引超出矩阵维度。
出错 random_solve (line 49)
                if bidprice(bidprice==sway{i}(j))>maxprice(i,sway{i}(j))

在任意一次检查中,length(sway{i})=3,此时会出现j=4进入的情况,导致sway{i}(j)会超出索引,在加入以下代码后就不会提示错误了

            for j=1:length(sway{i})
                if j>length(sway{i})
                    break;
                end
                if bidprice(bidprice==sway{i}(j))>maxprice(i,sway{i}(j))
                    sway{i}(j)=[];
                end
            end

显然确实是有大于for最大值的情况进入循环。

在进行clear,clc清空所有内容后,检查整个文件只有这一处使用了j变量,多次运行仍然会出现j大于length(sway{i})的情况。

请问是什么原因导致的。

只有这一个.m文件,没有调用任何其他文件。

你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答

本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。

​​​​因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。