Changeset 672 for trunk/src/mask_proj.m


Ignore:
Timestamp:
Aug 6, 2013, 3:47:07 PM (11 years ago)
Author:
sommeria
Message:

various bugs corrected

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/mask_proj.m

    r667 r672  
    3535for icell=1:numel(CellInfo)
    3636    if NbDimArray(icell)==2
     37        XName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(1)};
     38        YName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(2)};
     39        if isfield(CellInfo{icell},'VarIndex_errorflag')
     40            FFName=FieldData.ListVarName{CellInfo{icell}.VarIndex_errorflag};
     41        else
     42            FFName='FF';%default error (mask) flag name (if not already used)
     43            if isfield(FieldData,'FF')
     44                ind=1;
     45                while isfield(FieldData,['FF_' num2str(ind)])
     46                    ind=ind+1;
     47                end
     48                FFName=['FF_' num2str(ind)];% append an index to the name of error flag, FF_1,FF_2...
     49            end
     50            ProjData.ListVarName=[FieldData.ListVarName {FFName}];
     51            ProjData.VarDimName=[FieldData.VarDimName FieldData.VarDimName(CellInfo{icell}.CoordIndex(1))];
     52            ProjData.VarAttribute{numel(FieldData.VarDimName)}.Role='errorflag';
     53        end
    3754        switch CellInfo{icell}.CoordType;
    38             case  'scattered'
    39                 XName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(1)};
    40                 YName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(2)};
     55            case  'scattered'               
    4156                mask_ind_i=round(0.5+(FieldData.(XName)-MaskData.AX(1))/DX);%nbpoint terms
    4257                mask_ind_j=round(0.5+(FieldData.(YName)-MaskData.AY(1))/DY);%nbpoint terms
     
    4661                MaskData.A=reshape(MaskData.A,1,[]);
    4762                checkfalse(MaskData.A(checkin)>200)=0;
    48                 if ~isfield(FieldData,'FF')
    49                     FieldData.FF=zeros(size(FieldData.(XName)));
    50                     FieldData.ListVarName=[FieldData.ListVarName {'FF'}];
    51                     FieldData.VarDimName=[FieldData.VarDimName FieldData.VarDimName(CellInfo{icell}.CoordIndex(1))];
    52                     FieldData.VarAttribute{numel(FieldData.VarDimName)}.Role='errorflag';
    53                 end
    5463                for ivar=1:numel(CellInfo{icell}.VarIndex)
    5564                    VarName=FieldData.ListVarName{CellInfo{icell}.VarIndex(ivar)};
    56                     FieldData.(VarName)(checkfalse)=0;
    57                     FieldData.FF(checkfalse)=1;
     65                    ProjData.(VarName)(checkfalse)=0;
    5866                end
     67                if ~isfield(CellInfo{icell},'VarIndex_errorflag')% an error flag already exists in the current cell
     68                    ProjData.(FFName)=zeros(size(ProjData.(VarName)));
     69                end
     70                ProjData.(FFName)(checkfalse)=1;
    5971            case  'grid'
    60                 XName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(1)};
    61                 YName=FieldData.ListVarName{CellInfo{icell}.CoordIndex(2)};
    6272                Var1Name=FieldData.ListVarName{CellInfo{icell}.VarIndex(1)};
    6373                [Npy_field,Npx_field]=size(FieldData.(Var1Name));
     
    7080                [XMask,YMask]=meshgrid(XMask,YMask);
    7181                Mask = interp2(XMask,YMask,MaskData.A,XArray,YArray','nearest');
    72 %                 figure(1)
    73 %                 image(MaskData.A)
    74                 Mask=Mask>200;
    75                 if ~isfield(FieldData,'FF')
    76                     FieldData.FF=zeros(size(FieldData.(XName)));
    77                     FieldData.ListVarName=[FieldData.ListVarName {'FF'}];
    78                     FieldData.VarDimName=[FieldData.VarDimName FieldData.VarDimName(CellInfo{icell}.CoordIndex(1))];
    79                     FieldData.VarAttribute{numel(FieldData.VarDimName)}.Role='errorflag';
    80                 end
     82                Mask=Mask>200;               
    8183                for ivar=1:numel(CellInfo{icell}.VarIndex)
    8284                    VarName=FieldData.ListVarName{CellInfo{icell}.VarIndex(ivar)};
    83                     FieldData.(VarName)=FieldData.(VarName).*Mask;
    84                     FieldData.FF=~Mask;
     85                    if ~strcmp(VarName,FFName)
     86                        ProjData.(VarName)=FieldData.(VarName).*Mask;
     87                    end
     88                end
     89                if isfield(CellInfo{icell},'VarIndex_errorflag')% an error flag already exists in the current cell
     90                    ProjData.(FFName)=FieldData.(FFName) | ~Mask;
     91                else
     92                    ProjData.(FFName)= ~Mask;
    8593                end
    8694        end
    8795    end
    8896end
    89        
    9097
     98
Note: See TracChangeset for help on using the changeset viewer.