[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