index因为数字而超出界限误差

时间:2013-02-14 10:57:31

标签: matlab

它循环直到最后一次然后我得到一个错误“尝试访问EQ_NUM(8);索引越界因为 numel(EQ_NUM)= 7“。

N_NODE=8
N_PRE_DISP=2
DISP_NODE= [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 

1 个答案:

答案 0 :(得分:0)

在这个循环中

EQ_NUM = 0;
for i = 1:N_PRE_DISP 
    NODE=DISP_NODE(i);
    EQ_NUM(NODE) = -i;
end

您使用7个元素创建EQ_NUM; NODE所取的最高值是DISP_NODE(1:2)7的最高值。

在这个循环中

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。