0

我有一个仅由 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 来打印距离

4

1 回答 1

1

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

for i=1:2

    jtemp = 1;

    for j=1:7

        if j<jtemp
            continue
        end
于 2013-11-04T14:10:45.087 回答