当细胞在基质中是空的或isnan时,打破循环?

时间:2016-07-31 07:00:12

标签: matlab

coordinates matrix

  

首先,我是matlab编程的新手。这是我的疑问。当这个矩阵中的单元格为空或NaN时,我想打破循环。 Matlab建议不要将isempty和isnan放在同一行。我得到的错误是“尝试访问坐标(10,1);索引越界,因为大小(坐标)= [9,8]。”。我搞砸了某个地方,有人可以帮忙吗?感谢。

    n_b=0;
    n_nodes=0;
    for j=1:2:10
        for i=1:1:10
            if (isempty(coordinates(i,j))) or (isnan(coordinates(i,j)))
                break
            else
                disp(coordinates(i,j));
                n_nodes=n_nodes+1;
            end
        end
        n_b=n_b+1;
        if (n_b==4) % break at four columns
            break
        end
    end

1 个答案:

答案 0 :(得分:1)

问题出在以下几行:

for j=1:2:10
    for i=1:1:10

您正在尝试访问不存在的坐标。试试这个:

for j = 1:2:size(coordinates,2)
    for i = 1:size(coordinates,1)

这将在矩阵结束前始终停止。

此外,从您的条件中删除isempty()检查,因为它永远不会满足,并且or不是有效的MATLAB语法(应该是||)。

以下是完整代码的外观:

n_b = 0;
n_nodes = 0;
for j = 1:2:size(coordinates,2)
    for i = 1:size(coordinates,1)
        if isnan(coordinates(i,j))
            break
        else
            disp(coordinates(i,j));
            n_nodes = n_nodes+1;
        end
    end
    n_b = n_b+1;
    if (n_b==4) % break at four columns
        break
    end
end