how to solve the Datenum failed error
6 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Rashni Anandawansha
el 23 de Oct. de 2020
Comentada: Peter Perkins
el 20 de Nov. de 2020
I've been trying to run a matlab code which uses datenum ,
fid=fopen('./stationeventinfo_1.dat','r');
tab_evt=textscan(fid,'%f%f%f%f%f%f');
fclose(fid);
n_d=length(tab_evt{1});
for ie=1:n_d
data_yr(ie)=tab_evt(ie,1);
data_mo(ie)=tab_evt(ie,2);
data_dy(ie)=tab_evt(ie,3);
data_hr(ie)=tab_evt(ie,4);
data_min(ie)=tab_evt(ie,5);
data_sec(ie)=tab_evt(ie,6);
data_time=datenum(data_yr(ie),data_mo(ie),data_dy(ie),...
data_hr(ie),data_min(ie),data_sec(ie));
end
where file stationeventinfo_1.dat is given as (i have more input line like this in this file)
1998 09 28 14 07 44
I keep getting this error which i cannot figure out how to resolve,
Error using datenum (line 190)
DATENUM failed.
Error in datecheck (line 24)
data_time=datenum(data_yr(ie),data_mo(ie),data_dy(ie),...
Caused by:
Error using datenummx
The datenummx function only accepts double arrays.
Please help :)
0 comentarios
Respuesta aceptada
Walter Roberson
el 24 de Oct. de 2020
Editada: Walter Roberson
el 24 de Oct. de 2020
textscan() returns a cell array with one entry per column. Using () indexing to a cell array will get you a cell array in return.
data_yr(ie)=tab_evt{1}(ie);
Note: you are overwriting all of data_time every iteration of your loop.
You do not need any loop there are at all.
data_time = datenum(cell2mat(tab_evt));
We do not recommend datenum these days; datetime objects are typically much more convenient.
2 comentarios
Peter Perkins
el 20 de Nov. de 2020
Strongly recommend you heed Walter's advice about using datetime; I would also add that you should use readtable or readmatrix and not textscan.
Más respuestas (0)
Ver también
Categorías
Más información sobre Dates and Time en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!