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

조회 수: 13 (최근 30일)
mashtine
mashtine 2015년 6월 22일
답변: shankar sharma 2022년 1월 21일
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?

채택된 답변

Ashish Uthama
Ashish Uthama 2015년 6월 22일
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
suchitra rani
suchitra rani 2019년 8월 24일
Helpful.
Werner Barros
Werner Barros 2020년 8월 20일
Ashish Uthama thanks alot

댓글을 달려면 로그인하십시오.

추가 답변 (3개)

Werner Barros
Werner Barros 2019년 10월 24일
You can try to:
xxx = datevec(VARIABLE);

Werner Barros
Werner Barros 2020년 7월 29일
Thanks for help :D

shankar sharma
shankar sharma 2022년 1월 21일
time1=double(netcdf_time)/24+datenum('1900-01-01 00:00:00');
final_time=datevec(time1);

카테고리

Help CenterFile Exchange에서 NetCDF에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by