Why i am getting Nan?
1 view (last 30 days)
Show older comments
I'm trying to download the weather forecast from a site.
close all
clear all
%%download weather forecast data from server
current_files=urlread('https://www.sinoptik.bg/sofia-bulgaria-100727011?location');
relev_files=strfind(current_files,'FPTO51.0_r1101_TA.csv');
%for most recent file use last index in relev_files
ta_url=['https://www.sinoptik.bg/sofia-bulgaria-100727011?location',current_files(relev_files(1:end)-21:relev_files(1:end)+20)];
% ta_url=['http://dd.weatheroffice.ec.gc.ca/meteocode/ont/csv/',current_files(relev_files(1:end)-21:relev_files(1:end)+20)];
ta_data=urlread(ta_url);
%%put forecast data into vectors
clc
C = [strsplit(ta_data, '\n')]' ;
D = char(C(2:end-1));
for I = 1:numel(D,1)
E = strsplit(D(I,:));
year(I)=str2double(char(E(1,1)));
month(I) = str2double(char(E(1,2)));
F =char( E(1,3));
G = strsplit(F, 'T');
day(I) = str2double(char(G(1,1)));
H = char(G(1,1));
J = strsplit(H, ':');
hour(I) = str2double(char(J(1,1)));
min(I) = str2double(char(J(1,2)));
K = J{1,1};
L = strsplit(K, 'Z');
sec(I) = str2double(char(L(1,1)));
M = L{1,1};
N = strsplit(M, ',');
value(I) = str2double(char(N(1,1)));
end
%F = strsplit(D(1,:), 'T')
data=[year' month' day' hour' min' sec' value'];
figure
t = datetime(year, month, day, hour, min, sec);
plot(t, value, '*')
hold on
plot(t, value, '-k', 'Linewidth', 2)
axis tight, grid minor
xlabel('Time')
ylabel('Temperature (°C)')
1 Comment
Answers (2)
Cam Salzberger
on 7 May 2019
Edited: Cam Salzberger
on 7 May 2019
Any time str2double is unable to translate a particular input into a number, it returns NaN. That is probably where the issue is occuring, so consider checking the inputs more carefully. Also, numel generally takes just one input. I think you meant to use size(D, 1).
-Cam
0 Comments
See Also
Categories
Find more on Weather and Atmospheric Science in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!