how to solve the Datenum failed error
9 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2020-10-24
编辑:Walter Roberson
2020-10-24
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 个评论
Peter Perkins
2020-11-20
Strongly recommend you heed Walter's advice about using datetime; I would also add that you should use readtable or readmatrix and not textscan.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Dates and Time 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!