Changeset 128 for trunk/src/struct2nc.m


Ignore:
Timestamp:
Nov 21, 2010, 10:06:11 PM (13 years ago)
Author:
sommeria
Message:

series: give writting access to the group for all subdirectories produced
uvmat.fig: change of vect and scalar frames (to be consistent with view_field)
uvmat: various cleaning
plot_field: various cleaning to improve axes definition and avoid blinking
geometry_calib: improved dispay of point coordiantes, improved link with dataview for REPLICATE.
struct2nc: repair bug , file was not closed.
cell2tab: cleaning
dataview: improve the browser
civ: solve pb of image naming

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/struct2nc.m

    r107 r128  
    4242    return
    4343end
    44 hhh=which('netcdf.create');% look for built-in matlab library
     44hhh=which('netcdf.create');% look for built-in matlab netcdf library
    4545
    46 %USE OF built-in netcdf library
     46%USE OF built-in matlab netcdf library
    4747if ~isequal(hhh,'')
    4848    FilePath=fileparts(flname);
     
    6868                if ~testvar               
    6969                    eval(['cte=Data.' keys{iattr} ';'])
    70                     if (ischar(cte) ||isnumeric(cte)) &&  ~isempty(cte)&& ~isequal(cte,'')
     70                    if (ischar(cte) ||isnumeric(cte)) &&  ~isempty(cte)%&& ~isequal(cte,'')
     71                        %write constant only if it is numeric or char string, and not empty
    7172                        netcdf.putAtt(nc,netcdf.getConstant('NC_GLOBAL'),keys{iattr},cte)
    72                     else
    73                         errormsg='global attributes must be characters or numbers';
    74                         return
    7573                    end
    7674                end
     
    7977    end
    8078    %create dimensions
    81     dimid=[];
     79    dimid=zeros(1,length(Data.ListDimName));
    8280    for idim=1:length(Data.ListDimName)
    83          dimid(idim) = netcdf.defDim(nc,Data.ListDimName{idim},Data.DimValue(idim)); 
     81         dimid(idim) = netcdf.defDim(nc,Data.ListDimName{idim},Data.DimValue(idim));
    8482    end
    8583    VarAttribute={}; %default
     
    8987        testattr=1;
    9088    end
    91     varid=[];
     89    varid=zeros(1,length(Data.ListVarName));
    9290    for ivar=1:length(ListVarName)
    93         varid(ivar)=netcdf.defVar(nc,ListVarName{ivar},'double',dimid(Data.VarDimIndex{ivar}));%define variable 
     91        varid(ivar)=netcdf.defVar(nc,ListVarName{ivar},'nc_double',dimid(Data.VarDimIndex{ivar}));%define variable 
    9492    end
    9593     %write variable attributes
     
    117115                VarDimName={VarDimName};
    118116            end
    119             testrange=(numel(VarDimName)==1 && strcmp(VarDimName{1},ListVarName{ivar}) && numel(VarVal)==2);
    120             testline=isequal(length(siz),2) && isequal(siz(1),1)&& isequal(siz(2), Data.DimValue(VarDimIndex));
    121             testcolumn=isequal(length(siz),2) && isequal(siz(1), Data.DimValue(VarDimIndex))&& isequal(siz(2),1);
     117            testrange=(numel(VarDimName)==1 && strcmp(VarDimName{1},ListVarName{ivar}) && numel(VarVal)==2);% case of a coordinate defined on a regular mesh by the first and last values.
     118            testline=isequal(length(siz),2) && isequal(siz(1),1)&& isequal(siz(2), Data.DimValue(VarDimIndex));%matlab vector
     119            testcolumn=isequal(length(siz),2) && isequal(siz(1), Data.DimValue(VarDimIndex))&& isequal(siz(2),1);%matlab column vector
    122120            if ~testrange && ~testline && ~testcolumn && ~isequal(siz,Data.DimValue(VarDimIndex))
    123121                errormsg=['wrong dimensions declared for ' ListVarName{ivar} ' in struct2nc.m'];
     
    126124            if testline || testrange
    127125                if testrange
    128                     VarVal=linspace(VarVal(1),VarVal(2),Data.DimValue(VarDimIndex));
     126                    VarVal=linspace(VarVal(1),VarVal(2),Data.DimValue(VarDimIndex));% restitute the whole array of coordinate values
    129127                end
    130                %nc{ListVarName{ivar}}=ncfloat(Data.ListDimName(VarDimIndex));%vector of x coordinates
    131                netcdf.putVar(nc,varid(ivar), double(VarVal'));
     128                netcdf.putVar(nc,varid(ivar), double(VarVal'));
    132129            else
    133130                netcdf.putVar(nc,varid(ivar), double(VarVal));
    134                 %nc{ListVarName{ivar}}(:) = VarVal;
    135             end
    136            
     131            end     
    137132        end
    138133    end
     134    netcdf.close(nc)
    139135%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    140136%OLD netcdf toolbox
Note: See TracChangeset for help on using the changeset viewer.