[Dart-dev] [4444] DART/trunk/matlab/get_ens_size.m: function to return the number of ensemble members in the netcdf file

nancy at ucar.edu nancy at ucar.edu
Fri Jul 30 11:01:05 MDT 2010


Revision: 4444
Author:   thoar
Date:     2010-07-30 11:01:04 -0600 (Fri, 30 Jul 2010)
Log Message:
-----------
function to return the number of ensemble members in the netcdf file

Added Paths:
-----------
    DART/trunk/matlab/get_ens_size.m

-------------- next part --------------
Added: DART/trunk/matlab/get_ens_size.m
===================================================================
--- DART/trunk/matlab/get_ens_size.m	                        (rev 0)
+++ DART/trunk/matlab/get_ens_size.m	2010-07-30 17:01:04 UTC (rev 4444)
@@ -0,0 +1,54 @@
+function ens_size = get_ens_size(fname)
+%% get_ens_size  Returns the size of the ensemble.
+%
+% Example:
+% fname = 'Prior_Diag.nc';
+% ens_size = get_ens_size(fname);
+
+%% DART software - Copyright \xA9 2004 - 2010 UCAR. This open source software is
+% provided by UCAR, "as is", without charge, subject to all terms of use at
+% http://www.image.ucar.edu/DAReS/DART/DART_download
+%
+% <next few lines under version control, do not edit>
+% $URL$
+% $Id$
+% $Revision$
+% $Date$
+
+if ( exist(fname,'file') ~= 2 ), error('%s does not exist.',fname); end
+
+copy_meta_data = nc_varget(fname,'CopyMetaData');
+atts           = nc_getdiminfo(fname,'copy');
+num_copies     = atts.Length;
+
+% For a single copy, the size is nx1, for more k copies, it's kxn
+if size(copy_meta_data, 2) == 1
+   copy_meta_data = transpose(copy_meta_data);
+end
+
+% Figure out which copy is the matching one
+ens_size = 0;
+for i = 1:num_copies,
+
+   % for matching -- we want to ignore whitespace -- find it & remove it
+   nowhitemd = dewhite(copy_meta_data(i,:));
+
+   if strmatch('ensemblemember', nowhitemd) == 1
+      ens_size = ens_size + 1;
+   end
+end
+
+% Provide modest error support
+
+if (ens_size == 0)
+   fprintf('WARNING: unable to find any valid ensemble members in %s\n', fname)
+   disp('valid metadata strings are: ')
+   for i = 1:num_copies,
+      fprintf('%s\n',deblank(copy_meta_data(i,:)))
+   end
+end
+
+function str2 = dewhite(str1)
+% internal function to remove whitespace from a character string
+i = find( ~isspace(str1) );
+str2 = str1(i);


Property changes on: DART/trunk/matlab/get_ens_size.m
___________________________________________________________________
Added: svn:mime-type
   + text/x-matlab
Added: svn:keywords
   + Date Rev Author HeadURL Id
Added: svn:eol-style
   + native


More information about the Dart-dev mailing list