Matlab 索引越界错误,因为numel
它一直循环到最后一次,然后我得到一个错误“试图访问EQ_NUM(8);索引超出范围,因为 numel(EQ_NUM)=7。” 在这个循环中Matlab 索引越界错误,因为numel,matlab,Matlab,它一直循环到最后一次,然后我得到一个错误“试图访问EQ_NUM(8);索引超出范围,因为 numel(EQ_NUM)=7。” 在这个循环中 EQ_NUM = 0; for i = 1:N_PRE_DISP NODE=DISP_NODE(i); EQ_NUM(NODE) = -i; end ROW = 0; for i = 1:N_NODE if (EQ_NUM(i)==0) ROW = ROW+1; EQ_NUM(i)=ROW;
EQ_NUM = 0;
for i = 1:N_PRE_DISP
NODE=DISP_NODE(i);
EQ_NUM(NODE) = -i;
end
ROW = 0;
for i = 1:N_NODE
if (EQ_NUM(i)==0)
ROW = ROW+1;
EQ_NUM(i)=ROW;
end
end
你用7个元素创建EQ_NUM
;NODE
所取的最大值是DISP\u NODE(1:2)
中的最大值,即7
在这个循环中
EQ_NUM = 0;
for i = 1:N_PRE_DISP
NODE=DISP_NODE(i);
EQ_NUM(NODE) = -i;
end
ROW = 0;
for i = 1:N_NODE
if (EQ_NUM(i)==0)
ROW = ROW+1;
EQ_NUM(i)=ROW;
end
end
您循环使用i=1:8
并最终尝试执行EQ_NUM(8)==0
你需要修理一些东西,但我不知道是什么。可能您认为Matlab数组是从0开始索引的,它们不是,Matlab数组的第一个索引是1。我如何创建EQ_NUM以包含8个元素?冒着看起来毫无帮助的风险:您的问题的答案可以在介绍性文档的前几页中找到。你最好把时间花在阅读上,而不是在这里问一系列非常基本的问题。所以,我修正了我的错误。EQ_NUM=零(1,N_节点);对于i=1:N_PRE_DISP NODE=DISP_NODE(i);EQ_NUM(节点)=-i;结束行=0;对于i=1:N_节点,如果(EQ_NUM(i)==0)行=行+1;EQ_NUM(i)=行;end end不清楚-我首先将EQ_NUM定义为我需要的大小的零数组。谢谢你的帮助你成功的自我教育证明我拒绝帮助,我感到一种温暖的满足感:-)