Effacer les filtres
Effacer les filtres

Load time from netcdf file and retain the 'Hour' value

16 vues (au cours des 30 derniers jours)
mashtine
mashtine le 22 Juin 2015
Hello,
I have a time variable (attached) that I created from using
netcdf_time = ncread('sample.netcdf','time');
When I use ncdisp on the netcdf file, time is described as the following:
time
Size: 102272x1
Dimensions: time
Datatype: int32
Attributes:
units = 'hours since 1900-01-01 00:00:0.0'
long_name = 'time'
calendar = 'gregorian'
My question is, what do I do with the netcdf_time variable to get the time into matlab datenum format while retaining the 'hour'. I have used this based on online phishing
time = double(netcdf_time/24 + datenum('1900-01-01 00:00:00'));
But, datestr(time(1:7,1),'dd-mm-yyyy HH:MM:SS') returns
01-01-1980 00:00:00
01-01-1980 00:00:00
01-01-1980 00:00:00
02-01-1980 00:00:00
02-01-1980 00:00:00
02-01-1980 00:00:00
02-01-1980 00:00:00
When it should return
01-01-1980 03:00:00
01-01-1980 06:00:00
01-01-1980 09:00:00
01-01-1980 12:00:00
01-01-1980 15:00:00
01-01-1980 18:00:00
01-01-1980 21:00:00
Any ideas?

Réponse acceptée

Ashish Uthama
Ashish Uthama le 22 Juin 2015
Instead of
time = double(netcdf_time/24 + datenum('1900-01-01 00:00:00'));
(netcdf/24 is still happening in int32, hence you are loosing precision)
Try
time = double(netcdf_time)/24 + datenum('1900-01-01 00:00:00');
  3 commentaires
suchitra rani
suchitra rani le 24 Août 2019
Helpful.
Werner Barros
Werner Barros le 20 Août 2020
Ashish Uthama thanks alot

Connectez-vous pour commenter.

Plus de réponses (3)

Werner Barros
Werner Barros le 24 Oct 2019
You can try to:
xxx = datevec(VARIABLE);

Werner Barros
Werner Barros le 29 Juil 2020
Thanks for help :D

shankar sharma
shankar sharma le 21 Jan 2022
time1=double(netcdf_time)/24+datenum('1900-01-01 00:00:00');
final_time=datevec(time1);

Community Treasure Hunt

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

Start Hunting!

Translated by