我使用的是API來獲取列車的實際數據時間,並試圖獲取距離用戶輸入時間最近的列車時間,然後顯示該列車時間,並且接下來的4個列車准許列車運行。我正在閱讀信息,代碼完成了它應該做的事情,但是當我在7個單元格中查看數組中的一堆[]括號而不是計算出的數字時。有什麼建議麼?下面的代碼與API將Int附加到數組Matlab中
測試值: requestStationSelected = '大學%20City' 和requestEndStation = '羅斯林'
%this is the API link for the live data from Septa this will get 30
%results and see which time is closer to the user entered time
requestInfoSeptaLive = ['http://www3.septa.org/hackathon/NextToArrive/' requestStationSelected '/' requestEndStation '/30'];
%Again tries to get the information and if there is a failure it will give
%a probable cause and terminate the program
try
getInfoSeptaLive = urlread(requestInfoSeptaLive);
catch
if getInfoSeptaLive ~= '[]'
disp...
('Either the arrival/depart stations dont quite match up or theres a server error. Try again.');
return;
else
disp('Unable to fetch the information from Septa, please try again')
return;
end
end
%parses the information returned from the Live API
dataReturnedFromLiveAPI = parse_json(getInfoSeptaLive);
dataReturnedFromLiveAPI = dataReturnedFromLiveAPI{1};
%gets the size of the API in case there are no trains running
sizeOfDataNoTrains = size(dataReturnedFromLiveAPI, 1);
sizeOfData = size(dataReturnedFromLiveAPI, 2);
counter = 0;
for i = 1:sizeOfData
scanForClosestTime = dataReturnedFromLiveAPI{1,i}.orig_departure_time;
trainTimeGivenH = sscanf(scanForClosestTime, '%i');
findColonTrain = strfind(scanForClosestTime, ':');
trainTimeGivenMStr = scanForClosestTime(findColonTrain+1:4);
trainTimeGivenM = int32(str2num(trainTimeGivenMStr));
trainDepartTimeM = (trainTimeGivenH(1,1) * 60) + (trainTimeGivenM);
differenceBetweenTimes = trainDepartTimeM - userEnteredMins;
if trainDepartTimeM < userEnteredMins
differenceBetweenTimes = userEnteredMins - trainDepartTimeM;
end
stopAtEndOfData = sizeOfData;
goodTimeFrame = 60;
closestTime = cell(1, stopAtEndOfData);
storeTheDifference = cell(1, stopAtEndOfData);
if(differenceBetweenTimes < 60)
if (counter < 5)
closestTime{i} = scanForClosestTime;
storeTheDifference{i} = differenceBetweenTimes;
counter = counter + 1;
end
end
end
您可以給'requestStationSelected'和'requestEndStation'有效的值,這樣我們就可以看到問題是什麼樣子了?一個'[]'意味着一個空單元 - 通常,如果你先分配給{3}而沒有先用{1}和{2}做某件事,你會得到{[],[],value}。它看起來像是在你分配'nearestTime {i}'的地方發生的,但是不能運行我猜測的代碼。 – Floris 2013-03-09 00:54:14
requestStationSelected ='University%20City'and requestEndStation ='Roslyn' – heinst 2013-03-09 00:59:09