Borrar filtros
Borrar filtros

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

21 visualizaciones (últimos 30 días)
mashtine
mashtine el 22 de Jun. de 2015
Respondida: shankar sharma el 21 de En. de 2022
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?

Respuesta aceptada

Ashish Uthama
Ashish Uthama el 22 de Jun. de 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 comentarios
Werner Barros
Werner Barros el 20 de Ag. de 2020
Ashish Uthama thanks alot

Iniciar sesión para comentar.

Más respuestas (3)

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

Werner Barros
Werner Barros el 29 de Jul. de 2020
Thanks for help :D

shankar sharma
shankar sharma el 21 de En. de 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