1

我正在使用返回下一班火车的实时数据 API。我计划为用户提供接下来 5 趟到达的火车。如果到达的列车少于 5 列,您如何处理?我在想办法时遇到了麻烦,我在想用 if 语句的办法,但不知道如何设置它们。

time1Depart = dataReturnedFromLiveAPI{1,1}.orig_departure_time;
time2Depart = dataReturnedFromLiveAPI{1,2}.orig_departure_time;
time3Depart = dataReturnedFromLiveAPI{1,3}.orig_departure_time;
time4Depart = dataReturnedFromLiveAPI{1,4}.orig_departure_time;
time5Depart = dataReturnedFromLiveAPI{1,5}.orig_departure_time;

time1Arrival = dataReturnedFromLiveAPI{1,1}.orig_arrival_time;
time2Arrival = dataReturnedFromLiveAPI{1,2}.orig_arrival_time;
time3Arrival = dataReturnedFromLiveAPI{1,3}.orig_arrival_time;
time4Arrival = dataReturnedFromLiveAPI{1,4}.orig_arrival_time;
time5Arrival = dataReturnedFromLiveAPI{1,5}.orig_arrival_time;

现在的代码使用一个从 1:numoftrains 开始的矩阵,但我只使用前五个。

4

1 回答 1

2

将单个值分配给单独的变量是一种不好的做法。如果根据 和 的类将所有相关值传递给向量或元胞数组,则效果会orig_departure_time更好orig_arrival_time

它看起来像是dataReturnedFromLiveAPI一个结构单元数组。然后你可以这样做:

timeDepart = cellfun(@(x), x.orig_departure_time, ...
    dataReturnedFromLiveAPI(1,1:min(5,size(dataReturnedFromLiveAPI,2))), ...
    'UniformOutput',0 );
timeArrival = cellfun(@(x), x.orig_arrival_time, ...
    dataReturnedFromLiveAPI(1,1:min(5,size(dataReturnedFromLiveAPI,2))), ...
    'UniformOutput',0 );

然后你如何一个一个地访问这些值

time1Depart = timeDepart{1};

如果orig_departure_timeorig_arrival_time是数字标量,您可以使用...'UniformOutput',1.... 您将获得作为向量的输出,并且可以使用timeDepart(1).

于 2013-03-08T02:29:11.873 回答