Matlab 索引越界错误,因为numel

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(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;
    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定义为我需要的大小的零数组。谢谢你的帮助你成功的自我教育证明我拒绝帮助,我感到一种温暖的满足感:-)