2013-03-08 37 views
1

我正在使用返回下一个到达列车的实时数据API。我计划给用户接下来的5班列车。如果少于5列火车到达,你如何处理?我在思考一个方法时遇到了麻烦,我正在考虑如何使用if语句,但不知道如何设置它们。使用实时数据Matlab进行错误处理

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但我只用第5位。

回答

2

将个别值分配给单独的变量是个不好的做法。如果您将所有相关值传递给矢量或单元阵列,则取决于类别orig_departure_timeorig_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)