From 8f54a4851a9720abf81877e41b96deb692e8850d Mon Sep 17 00:00:00 2001 From: Jacques Grelet <jacques.grelet@ird.fr> Date: Tue, 23 Feb 2010 15:31:41 +0000 Subject: [PATCH] corrige un bug avec la version native de netcdf sous Matlab > 2008b, les variables DAYD n etaient pas convertit avec datenum2julian et julian2datenum --- tsg_io/readTsgDataNetCDF.m | 17 ++++++++++++----- tsg_io/writeTSGDataNetCDF.m | 16 +++++++++++++++- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/tsg_io/readTsgDataNetCDF.m b/tsg_io/readTsgDataNetCDF.m index 6c9930d..5da4b81 100644 --- a/tsg_io/readTsgDataNetCDF.m +++ b/tsg_io/readTsgDataNetCDF.m @@ -107,10 +107,6 @@ automaticQC( hMainFig ) % value(value == fillval(nc{i})) = NaN; % end - % assign netcdf variables in base workspace - % ----------------------------------------- - assignin('base', variable, nv(:)); - % populate tsg structure with netcdf variables % -------------------------------------------- tsg.(variable) = nv(:); @@ -120,7 +116,12 @@ automaticQC( hMainFig ) if strmatch('DAYD', variable) tsg.(variable) = julianToDatenum(tsg.(variable)); end - end + + % assign netcdf variables in base workspace + % ----------------------------------------- + assignin('base', variable, nv(:)); + + end % end of variables loop % Keep somme information for the log file % --------------------------------------- @@ -172,6 +173,12 @@ automaticQC( hMainFig ) var = char(key); tsg.(var) = nc.VARIABLES.(var).data__; + % transforme julian days variables to Matlab datenum + % -------------------------------------------------- + if strmatch('DAYD', var) + tsg.(var) = julianToDatenum(tsg.(var)); + end + % assign variable in base workspace % ------------------------------------------- assignin('base', var , tsg.(var)); diff --git a/tsg_io/writeTSGDataNetCDF.m b/tsg_io/writeTSGDataNetCDF.m index 3617c42..9430bc0 100644 --- a/tsg_io/writeTSGDataNetCDF.m +++ b/tsg_io/writeTSGDataNetCDF.m @@ -360,8 +360,22 @@ end % ----------------------------------------------------------------- for key = keys(nc.VARIABLES) var = char(key); - nc.VARIABLES.(var).data__ = tsg.(var); + if strmatch('DAYD', var) + nc.VARIABLES.(var).data__ = datenumToJulian(tsg.(var)); + else + nc.VARIABLES.(var).data__ = tsg.(var); + end end + +% % Convert Matlab julian days (datenum) to 1950 reference +% % ------------------------------------------------------ +% ncv_keys = keys(nc.VARIABLES); +% d = strmatch('DAYD', ncv_keys); +% for i=1:numel(d) +% tsg.(ncv_keys{d(i)}) = datenumToJulian(tsg.(ncv_keys{d(i)})); +% end + + % loop over all global attributes and get associated value in tsg % structure -- GitLab