无限while嵌套在一个for循环在matlab



我想做一个while循环,嵌套在Matlab中的for循环中,以便找到数据中不同对之间的距离。我的数据有以下形式

    ID  lon     lat     time
    1   33.56   40.89   803
    2   32.45   41.03   803
    3   35.78   39.85   803
    2   33.04   40.21   804
    3   36.89   40.23   804
    2   33.98   39.33   806
    2   33.67   39.73   809
    3   37.02   40.77   809

lonlat为地理坐标。在for循环中,我想从矩阵中取出第一行,然后在while循环中检查所有其他行并计算对之间的距离,只要while中的条件是true。我的意思是,对于第一行,我想让程序计算时间为803时1- 2,1 -3对之间的距离,然后是时间为803时1- 2,1 -3对之间的距离。当我再次将for循环中的步长增加1时,程序应该计算在803处2-3对之间的距离,然后在804处2-3对,以此类推。为此,我将for循环编写如下:

for ii = 1:length(MM(:,4))
    t = MM(ii,4);
    ind1 = ii;
    length(ind1);
    lat1 = lat(ind1);
    lon1 = lon(ind1);
    jj = ii +1;
    while (t <= (MM(ii,4)+5))
        for jj = 2:length(MM(:,4))
            ind2 = jj;
            length(ind2);
            lat2 = lat(ind2);
            lon2 = lon(ind2);
            w = MM(jj,4);
        end
        dis = distance(lat1, lon1, lat2, lon2);
        t = t + 1;
    end

    if dis <= 1
        [contact] = [ind1, ind2, t, w];
    end
end

使用这个for循环,我得到一个无限的while循环。我的问题是,为什么我得到这个无限的while循环,我应该如何使它工作,我所描述的?

我终于找到了答案。我把它贴在这里以供将来使用。
for ii = 1:length(MM(:,4))
    t = MM(ii,4);
    ind1 = ii;
    length(ind1);
    lat1 = lat(ind1);
    lon1 = lon(ind1);
    jj = ii + 1;
    while (MM(jj,4) - t <= 5)
            ind2 = jj;
            length(ind2);
            lat2 = lat(ind2);
            lon2 = lon(ind2);
            dis = distance(lat1, lon1, lat2, lon2);
            if dis <= 1
                contact = [MM(ind1,1), MM(ind2,1), t, MM(jj,4)]   
            else
                fprintf('There is no distance smaller than 1kmn')
            end
            jj = jj + 1;
    end
end

似乎while中嵌套的for循环是错误的,根本没有任何用途。第二个问题是while的条件。我之前在while条件下所做的比较是向后写的,没有任何意义。第三个问题是if表述。通过将if语句放入while循环中,我在联系人中获得了结果。

相关内容

  • 没有找到相关文章

最新更新