首先,我是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
答案 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