2013-03-08 1 views
1

Я использую API данных в реальном времени, который возвращает следующие прибывающие поезда. Я планирую предоставить пользователю следующие 5 поездов. Если прибывает менее 5 поездов, как вы справляетесь с этим? У меня возникли проблемы с мыслью о пути, я думал о том, с каким утверждением, но не знаю, как бы я их настроил.Обработка ошибок с помощью Live Data 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 но я использую только первые пять.

ответ

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_time и orig_arrival_time являются числовые скаляры, вы можете использовать ...'UniformOutput',1.... Вы получите результат как вектор и можете получить одиночные значения с timeDepart(1).