Changeset 674 for trunk/src/sub_field.m


Ignore:
Timestamp:
Aug 23, 2013, 2:56:17 PM (11 years ago)
Author:
sommeria
Message:

various bugs repaired, in particula timing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sub_field.m

    r581 r674  
    2626    return
    2727end
     28
    2829%% global attributes
    2930SubData.ListGlobalAttribute={};%default
     
    107108%% look for coordinates common to Field in Field_1
    108109ind_remove=zeros(size(Field_1.ListVarName));
     110% loop on the variables of the second field Field_1
    109111for ilist=1:numel(Field_1.ListVarName)
    110     if ischar(Field_1.VarDimName{ilist})||numel(Field_1.VarDimName{ilist})==1
    111         OldDim=Field_1.VarDimName{ilist};
    112         if ischar(OldDim)
    113             OldDim=Field_1.VarDimName(ilist);
    114         end
    115         VarVal=Field_1.(Field_1.ListVarName{ilist});
     112    % case of variable with a single dimension
     113    OldDimName=Field_1.VarDimName{ilist};
     114    if ischar(OldDimName), OldDimName={OldDimName}; end% transform char string to cell if relevant
     115    if numel(OldDimName)==1
     116        OldDim=Field_1.(Field_1.ListVarName{ilist});% get variable
     117        %look for the existence of the variable OldDim in the first field Field
    116118        for i1=1:numel(Field.ListVarName)
    117             if (isempty(ProjModeRequest{i1})&&isempty(ProjModeRequest_1{ilist})||strcmp(ProjModeRequest{i1},ProjModeRequest_1{ilist})) && isequal(Field.(Field.ListVarName{i1}),VarVal)
     119            if  isequal(Field.(Field.ListVarName{i1}),OldDim) &&...
     120                   ((isempty(ProjModeRequest{i1}) && isempty(ProjModeRequest_1{ilist}))  || strcmp(ProjModeRequest{i1},ProjModeRequest_1{ilist}))               
    118121               ind_remove(ilist)=1;
    119                NewDim=Field.VarDimName{i1};
    120                if ischar(NewDim)
    121                    NewDim={NewDim};
    122                end
    123                Field_1.VarDimName=regexprep_r(Field_1.VarDimName,['^' OldDim{1} '$'],NewDim{1});
     122               NewDimName=Field.VarDimName{i1};
     123               if ischar(NewDimName), NewDimName={NewDimName}; end %transform char chain to cell if needed
     124               Field_1.VarDimName=regexprep_r(Field_1.VarDimName,['^' OldDimName{1} '$'],NewDimName{1});% change the var name of Field_1 to the corresponding var name of Field
    124125            end
    125126        end
    126127    end
    127128end
    128 Field_1.ListVarName(find(ind_remove))=[];%removes these redondent coordinates
     129Field_1.ListVarName(find(ind_remove))=[];%removes the redondent coordinate
    129130Field_1.VarDimName(find(ind_remove))=[];
    130131Field_1.VarAttribute(find(ind_remove))=[];
     
    150151
    151152%% substrat fields when possible
    152 %[CellVarIndex,NbDim,CellVarType,errormsg]=find_field_cells(SubData);
    153153[CellInfo,NbDim,errormsg]=find_field_cells(SubData);
    154154ind_remove=zeros(size(SubData.ListVarName));
     
    180180SubData.VarDimName(find(ind_remove))=[];
    181181SubData.VarAttribute(find(ind_remove))=[];
    182 %end
     182'end'
    183183
    184184function OutputCell=regexprep_r(InputCell,search_string,new_string)
     185OutputCell=InputCell;%default
    185186for icell=1:numel(InputCell)
    186187    OutputCell{icell}=regexprep(InputCell{icell},search_string,new_string);
Note: See TracChangeset for help on using the changeset viewer.