2013-03-08 36 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)