在matlab中对循环没有反应

时间:2015-10-09 12:27:35

标签: matlab loops for-loop

我有一个包含不同类型数据的数据集,如下所示

MMSI        Latitude    Longitude   Date        Time    Time (decimal)
277333444   59.8564     30.497      04-08-12    09:49   589
241025000   37.3462     24.8713     04-08-12    09:49   589
636012774   35.7931     28.7227     04-08-12    11:29   680
248681000   36.9327     27.3042     04-08-12    11:52   703
312847000   35.3429     28.5582     04-08-12    11:52   703
239737000   36.4827     27.9405     04-08-12    11:52   703
200         36.7672     34.6444     04-08-12    12:52   763
237071900   36.7778     24.578      04-08-12    12:52   763

并从csv文件导入数据。在样本数据中,时间被排序,但在数据中,时间是混合的。对于数据,我想计算两个不同点之间的距离,并得出所涉及的MMSI以及时间。我编写了以下代码,几乎完成了我所描述的内容。

fid = fopen('vessel-movements-2.csv');
C = textscan(fid, '%f %f %f %f %f %s %s %s %f', 'HeaderLines', 1,     'Delimiter', ',');
fclose(fid);
iscell(C);
M = cell2mat(C(:,1:5));

DateString = (C{1,7});
formatIn = 'dd-mm-yy';
P = datenum(DateString, formatIn);
M = horzcat(M,P);

Q = cell2mat(C(:,9));
M = horzcat(M,Q);

a = M(:,6);
b=unique( a );

c = M(:,1);
d = unique(c);

lat = M(:,2);
lon = M(:,3);

time = M(:,7);
TimeStamp = P+time;
M = horzcat(M,TimeStamp);

MM = sortrows(M,8);

all(M(:,8) == MM(:,8))

for i = 1:length(MM(:,8))
    t = MM(i,8);
    ind1 = i;
    length(ind1);
    lat1 = lat(ind1);
    lon1 = lon(ind1);

    while (t <= (MM(i,8)+5))
        for j = 2:length(d)
            ind2 = j;
            length(ind2);
            lat2 = lat(ind2);
            lon2 = lon(ind2);
            w = MM(j,8);            
        end

        dis = distance(lat1, lon1, lat2, lon2);
        t = t+1;
    end


    if dis<=1

        contact = [ind1, ind2, t, w];
    end
  end

脚本中的索引与显示的数据中的索引略有不同,但我的数据中还有其他列,这些列未在循环中使用,因此为了更好的可视化,我将它们从示例中删除。它正确地计算了第一次的距离,但是在外循环中程序似乎滞后并且永远运行但没有任何结果。我尝试了调试器但结果是一样的。我看不出问题,任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

这不是答案,而是格式化的评论。我只想指出你的循环非常奇怪且功能失调。您当前版本中的内容实际上是这样的:

<!DOCTYPE html>
<html lang="en">

<head>
    <link rel="icon" href="img/icon.png">
    <title>LaBera</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="includes/bootstrap-3.3.5-dist/css/bootstrap.min.css">
    <script type="text/javascript" src="includes/jquery-1.11.3.js"></script>
    <script src="includes/bootstrap-3.3.5-dist/js/bootstrap.min.js"></script>
    <style>
        html {
            height: 100%;
            position: relative;
        }
        body {
            background-image: url("img/pattern-small.png");
            background-repeat: repeat-x-y;
            height: 100%;
            overflow: hidden;
            position: relative;
        }
        .centerimg {
            position: absolute;
            top: 50%;
            left: 50%;
            transform: translateX(-50%) translateY(-50%);
        }
    </style>
</head>

<body>
    <div class="container ">
        <div class="centerimg">
            <img src="img/logo1300.gif" class="img-responsive" alt="Logo" width="241px" height="400px">
        </div>
    </div>
    <footer class="footer navbar-fixed-bottom">
        <img src="img/footerNoShadow.gif" class="img-responsive" alt="Footer" height="66px">
    </footer>
</body>

</html>