/[MITgcm]/MITgcm_contrib/gael/profilesMatlabProcessing/profiles_misc/ncload.m
ViewVC logotype

Diff of /MITgcm_contrib/gael/profilesMatlabProcessing/profiles_misc/ncload.m

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.1 by gforget, Fri Nov 5 21:41:02 2010 UTC revision 1.2 by roquet, Mon Apr 11 20:48:54 2011 UTC
# Line 6  function theResult = ncload(fileIn, vara Line 6  function theResult = ncload(fileIn, vara
6  %   workspace of the "caller" of this routine.  If no names  %   workspace of the "caller" of this routine.  If no names
7  %   are given, all variables are loaded.  %   are given, all variables are loaded.
8    
 if nargin < 1, help(mfilename), return, end  
   
 result = [];  
 if nargout > 0, theResult = result; end  
   
9  global useNativeMatlabNetcdf; if isempty(useNativeMatlabNetcdf); useNativeMatlabNetcdf = ~isempty(which('netcdf.open')); end;  global useNativeMatlabNetcdf; if isempty(useNativeMatlabNetcdf); useNativeMatlabNetcdf = ~isempty(which('netcdf.open')); end;
10    
11    f = ncopen(fileIn, 'nowrite');
12    if isempty(f), return, end
13    vars=ncvars(f);
14    if isempty(varargin); varargin = vars; end;
15    
16  if (useNativeMatlabNetcdf);  if (useNativeMatlabNetcdf);
     f = netcdf.open(fileIn, 'nowrite');  
       
     vars=ncvars(f);  
     if isempty(varargin); varargin = vars; end;  
17            
18      for i = 1:length(varargin)      for i = 1:length(varargin)
19          if sum(strcmp(vars,varargin{i}))>0;          if sum(strcmp(vars,varargin{i}))>0;
20              %get variable              %get variable
21              varid = netcdf.inqVarId(f,varargin{i});              varid = netcdf.inqVarID(f,varargin{i});
22              aa=netcdf.getVar(f,varid);              aa=netcdf.getVar(f,varid);
23              %inverse the order of dimensions              %inverse the order of dimensions
24              if length(size(aa))>2|size(aa,2)~=1;              bb=length(size(aa)); aa=permute(aa,[bb:-1:1]);
                 bb=length(size(aa)); aa=permute(aa,[bb:-1:1]);  
             end;  
25              %replace missing value with NaN              %replace missing value with NaN
26              [atts]=ncatts(f,varid);              [atts]=ncatts(f,varid);
27              if strcmp(atts,'missing_value')&isreal(aa);              if strcmp(atts,'missing_value')&isreal(aa);
# Line 44  if (useNativeMatlabNetcdf); Line 38  if (useNativeMatlabNetcdf);
38          assignin('caller', varargin{i}, aa)          assignin('caller', varargin{i}, aa)
39      end      end
40            
     result = varargin;  
41            
     netcdf.close(f);  
42            
43            
44  else;%try to use old mex stuff  else;%try to use old mex stuff
45            
     f = netcdf(fileIn, 'nowrite');  
     if isempty(f), return, end  
       
     if isempty(varargin), varargin = ncnames(var(f)); end  
46            
47      for i = 1:length(varargin)      for i = 1:length(varargin)
48          if ~isstr(varargin{i}), varargin{i} = inputname(i+1); end          if ~isstr(varargin{i}), varargin{i} = inputname(i+1); end
# Line 71  else;%try to use old mex stuff Line 59  else;%try to use old mex stuff
59                  fld(replace) = NaN*ones(1,nreplace);                  fld(replace) = NaN*ones(1,nreplace);
60              end %if              end %if
61          end %if          end %if
62  %NaN-substitution messes up backward compatibility so I comment it out          %NaN-substitution messes up backward compatibility so I comment it out
63  %        assignin('caller', varargin{i}, fld);          %        assignin('caller', varargin{i}, fld);
64  %and revert to oldfld          %and revert to oldfld
65          assignin('caller', varargin{i}, oldfld)          assignin('caller', varargin{i}, oldfld)
66      end      end
67            
     result = varargin;  
       
     close(f)  
       
     if nargout > 0  
         theResult = result  
     else  
         ncans(result)  
     end  
       
68  end  end
69    
70    ncclose(f);
71    
72    result = varargin;
73    
74    if nargout > 0
75        theResult = result
76    else
77        ncans(result)
78    end
79    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

  ViewVC Help
Powered by ViewVC 1.1.22