how to solve the Datenum failed error

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 :)

 Risposta accettata

Walter Roberson
Walter Roberson il 24 Ott 2020
Modificato: Walter Roberson il 24 Ott 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 Commenti

Thank you :)
Strongly recommend you heed Walter's advice about using datetime; I would also add that you should use readtable or readmatrix and not textscan.

Accedi per commentare.

Più risposte (0)

Categorie

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by