矩阵中最大距离为0s - 双循环

时间:2013-11-04 13:50:21

标签: matlab matrix

我有一个只包含0和1的矩阵。我想创建一个嵌套循环,它检查矩阵中的连续0并将数字打印为距离。我稍后会使用距离来计算矩阵点之间的距离。

这是我的代码和我的测试矩阵B.

B = [ 1     1     1     0     0     0     1
 0     0     0     1     1     1     1];


for i=1:2    
  for j=1:7    
    if B(i,j)==0   
        jtemp=j;  
        distance=0;  
        while B(i,jtemp)==0  
            jtemp=jtemp+1;  
            distance=distance+1;  
        end
        fprintf('%0.0f,The distance is\n',distance)
    end
  end
end

当我运行此代码时,我会得到类似的结果:

3,距离为
2,距离为
1,距离为
3,距离为
2,距离为
1,距离是

所以我的问题是为什么这段代码不能通过计算矩阵的一行中的连续0来打印距离

1 个答案:

答案 0 :(得分:1)

这种行为是由于j的连续调用(从1到7,无论jtemp的值是多少)。您可以插入条件(if j<jtemp),告诉matlab不再进一步处理(continue),直到j再次匹配jtemp

for i=1:2

    jtemp = 1;

    for j=1:7

        if j<jtemp
            continue
        end