kznd 2021-05-30 11:22 采纳率: 0%
浏览 150

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})的情况。

请问是什么原因导致的。

  • 写回答

2条回答 默认 最新

  • kznd 2021-05-30 11:27
    关注

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

    评论

报告相同问题?