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

13 Ansichten (letzte 30 Tage)
mashtine
mashtine am 22 Jun. 2015
Beantwortet: shankar sharma am 21 Jan. 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?

Akzeptierte Antwort

Ashish Uthama
Ashish Uthama am 22 Jun. 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 Kommentare
Werner Barros
Werner Barros am 20 Aug. 2020
Ashish Uthama thanks alot

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (3)

Werner Barros
Werner Barros am 24 Okt. 2019
You can try to:
xxx = datevec(VARIABLE);

Werner Barros
Werner Barros am 29 Jul. 2020
Thanks for help :D

shankar sharma
shankar sharma am 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