Changeset 1143


Ignore:
Timestamp:
May 9, 2024, 6:51:30 PM (3 weeks ago)
Author:
sommeria
Message:

new display of false vectors

Location:
trunk/src
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/filter_tps.m

    r1142 r1143  
    6464NbVecSub=NbVec/NbSubDomain;% refined estimation of the nbre of vectors per subdomain
    6565smoothing=sqrt(Siz(1)*Siz(2)/NbVecSub)*FieldSmooth;%optimum smoothing increase as the typical mesh size =sqrt(SizX*SizY/NbVecSub)^1/2
     66
    6667%% default output
    6768SubRange=zeros(NbCoord,2,NbSubDomain);%initialise the boundaries of subdomains
     
    7879check_empty=zeros(1,NbSubDomain);
    7980
    80 
    8181%% calculate tps coeff in each subdomain
    8282for isub=1:NbSubDomain
     
    8787    %increase iteratively the subdomain if it contains less than SubDomainNbVec/4 source vectors
    8888    while numel(ind_sel)>numel(ind_sel_previous)
    89         ind_sel_previous=ind_sel;% record the set of selected vector indices for next iteration
    90         ind_sel=find(Coord(:,1)>=SubRange(1,1,isub) & Coord(:,1)<=SubRange(1,2,isub) & Coord(:,2)>=SubRange(2,1,isub) & Coord(:,2)<=SubRange(2,2,isub));
    91         %disp([numel(ind_sel) ' vectors in subdomain #' num2str(isub)])
     89        ind_sel_previous=ind_sel;% record the set of selected vector indices for next iteration
     90        ind_sel= find(FF==0 & Coord(:,1)>=SubRange(1,1,isub) & Coord(:,1)<=SubRange(1,2,isub) & Coord(:,2)>=SubRange(2,1,isub) & Coord(:,2)<=SubRange(2,2,isub));% indices of vectors in the subdomain #isub
    9291        % if no vector in the subdomain  #isub, skip the subdomain
    9392        if isempty(ind_sel)
    9493            check_empty(isub)=1;
    95             break %  go to next subdomain
     94            break
    9695        % if too few selected vectors, increase the subrange for next iteration
    9796        elseif numel(ind_sel)<SubDomainSize/4 && ~isequal( ind_sel,ind_sel_previous)
     
    107106            ind_ind_sel=1:numel(ind_sel);%default
    108107            if exist('Threshold','var')&&~isempty(Threshold)
    109                 FF(ind_sel)=20*(NormDiff>Threshold);%put FF value to 20 to identify the criterium of elimmination
    110                 ind_ind_sel=find(FF(ind_sel)==0); % select the indices of ind_sel corresponding to the remaining vectors
     108                FF(ind_sel)=2*(NormDiff>Threshold);%put FF value to 2 to identify the criterium of elimmination
     109                ind_ind_sel=find(FF(ind_sel)==0); % select the indices of remaining vectors in the subset of ind_sel vectors
    111110            end
    112111            % if no value exceeds threshold, the result is recorded
     
    146145                V_tps(1:NbCentre(isub)+3,isub)=V_tps_sub;
    147146                nb_select(ind_sel(ind_ind_sel))=nb_select(ind_sel(ind_ind_sel))+weight;
    148                 display(['tps redone with ' num2str(numel(ind_sel)) ' vectors after elimination of ' num2str(numel(ind_ind_sel)) ' erratic vectors in subdomain # ' num2str(isub) ' among ' num2str(NbSubDomain)])
     147                display(['tps redone with ' num2str(numel(ind_sel)) ' vectors after elimination of ' num2str(numel(ind_sel)-numel(ind_ind_sel)) ' erratic vectors in subdomain # ' num2str(isub) ' among ' num2str(NbSubDomain)])
    149148                break
    150149            end
     
    167166U_smooth=U_smooth./nb_select;% take the average at the intersection of several subdomains
    168167V_smooth=V_smooth./nb_select;
    169 U_smooth(FF==20)=U(FF==20);% set to the initial values the eliminated vectors (flagged as false)
    170 V_smooth(FF==20)=V(FF==20);
     168U_smooth(FF==2)=U(FF==2);% set to the initial values the eliminated vectors (flagged as false)
     169V_smooth(FF==2)=V(FF==2);
    171170fill=zeros(NbCoord+1,NbCoord,size(SubRange,3)); %matrix of zeros to complement the matrix Data.Civ1_Coord_tps (conveninent for file storage)
    172171Coord_tps=cat(1,Coord_tps,fill);
  • trunk/src/geometry_calib.m

    r1127 r1143  
    325325                end
    326326            end
     327            NbErrors=0;
    327328            for iexp=1:NbExp
    328329                XmlName=fullfile(ListPath{iexp},[ListSubdir{iexp} '.xml']);
     
    340341                if ~strcmp(errormsg,'')
    341342                    msgbox_uvmat('ERROR',errormsg);
     343                    NbErrors=NbErrors+1;
    342344                else
    343345                    if check_update
     
    349351            end
    350352        end
    351         msgbox_uvmat('CONFIMATION',['calibration replicated for ' num2str(NbExp) ' experiments']);
     353        msgout=['calibration replicated for ' num2str(NbExp-NbErrors) ' experiments'];
     354        if NbErrors~=0
     355            msgout={msgout;['error for ' num2str(NbErrors) ' experiments']};
     356        end
     357        msgbox_uvmat('CONFIMATION',msgout);
    352358    else
    353359        %% update the calibration parameters in the currently opened uvmat GUI
  • trunk/src/mouse_motion.m

    r1127 r1143  
    469469                    %set(hh,'UserData',index_point)
    470470                    index_point=get(hh,'UserData');
     471                    if isnumeric(index_point)
    471472                    XCoord(index_point)=xy(1,1);
    472473                    YCoord(index_point)=xy(1,2);
    473474                    set(hh,'XData',XCoord)
    474475                    set(hh,'YData',YCoord)
    475                 end
    476                 if ~isempty(index_point)
     476                    end
     477                end
     478                if ~isempty(index_point)&& isnumeric(index_point)
    477479                    set(hh_geometry_calib.CoordLine,'String',num2str(index_point))
    478480                   % Data=get(h_ListCoord,'Data');
  • trunk/src/plot_field.m

    r1133 r1143  
    730730                end
    731731            end
    732             if ~isempty(ivar_F)%~(isfield(PlotParam.Vectors,'HideWarning')&& isequal(PlotParam.Vectors.HideWarning,1))
    733                 vec_F=Data.(Data.ListVarName{ivar_F}); % warning flags for  dubious vectors
    734                 if  ~(isfield(PlotParam.Vectors,'CheckHideWarning') && isequal(PlotParam.Vectors.CheckHideWarning,1))
    735                     test_black=1;
    736                 end
    737             end
     732           
     733%                 if  ~(isfield(PlotParam.Vectors,'CheckHideWarning') && isequal(PlotParam.Vectors.CheckHideWarning,1))
     734%                     test_black=1;
     735%                 end
     736       
    738737            if ~isempty(ivar_FF_vec) %&& ~test_false
    739738                vec_FF=Data.(Data.ListVarName{ivar_FF_vec}); % flags for false vectors
     739                if ~isempty(ivar_F)%~(isfield(PlotParam.Vectors,'HideWarning')&& isequal(PlotParam.Vectors.HideWarning,1))
     740                    vec_F=Data.(Data.ListVarName{ivar_F}); % warning flags for  dubious vectors
     741                    vec_FF(find(vec_F==-2))=-2;%set alseFlag to -2 (edge of the search box)
     742                end
    740743            end
    741744        end
     
    11951198        vec_V=vec_V(ind_sel);
    11961199        vec_C=vec_C(ind_sel);
    1197         if ~isempty(ivar_F)
    1198            vec_F=vec_F(ind_sel);
    1199         end
     1200%         if ~isempty(ivar_F)
     1201%            vec_F=vec_F(ind_sel);
     1202%         end
    12001203        if ~isempty(ivar_FF_vec)
    12011204           vec_FF=vec_FF(ind_sel);
     
    12081211    % take flags into account: add flag colors to the list of colors
    12091212    nbcolor=size(colorlist,1);
    1210     if test_black
    1211        nbcolor=nbcolor+1;
    1212        colorlist(nbcolor,:)=[0 0 0]; %add black to the list of colors
    1213        if ~isempty(ivar_FF_vec)
    1214             col_vec(vec_F~=1 & vec_F~=0 & vec_FF==0)=nbcolor;
    1215        else
    1216             col_vec(vec_F~=1 & vec_F~=0)=nbcolor;
    1217        end
    1218     end
     1213% % %     if test_black
     1214% % %        nbcolor=nbcolor+1;
     1215% % %        colorlist(nbcolor,:)=[0 0 0]; %add black to the list of colors
     1216% % %        if ~isempty(ivar_FF_vec)
     1217% % %             col_vec(vec_F~=1 & vec_F~=0 & vec_FF==0)=nbcolor;
     1218% % %        else
     1219% % %             col_vec(vec_F~=1 & vec_F~=0)=nbcolor;
     1220% % %        end
     1221% % %     end
    12191222    nbcolor=nbcolor+1;
    12201223    if ~isempty(ivar_FF_vec)
    1221         if isfield(PlotParam.Vectors,'CheckHideFalse') && PlotParam.Vectors.CheckHideFalse==1
     1224        if isfield(PlotParam.Vectors,'CheckShowFalse') && PlotParam.Vectors.CheckShowFalse==1
     1225           % colorlist(nbcolor,:)=[1 0 1];% magenta color
     1226            colorlist(nbcolor,:)=[0 0 0];% blackcolor
     1227            if strcmp(PlotParam.Vectors.FalseCriteria,'ALL')
     1228                col_vec(vec_FF~=0)=nbcolor;
     1229            else
     1230                ind_dot=regexp(PlotParam.Vectors.FalseCriteria,':');
     1231                FalseValue=str2num(PlotParam.Vectors.FalseCriteria(1:ind_dot-1));%get the selected flg number
     1232                col_vec(vec_FF==FalseValue)=nbcolor;
     1233                nbcolor=nbcolor+1;
     1234                colorlist(nbcolor,:)=[NaN NaN NaN];%
     1235                col_vec(vec_FF~=0 & vec_FF~=FalseValue)=nbcolor;
     1236            end
     1237        else
    12221238            colorlist(nbcolor,:)=[NaN NaN NaN];% no plot of false vectors
    1223         else
    1224             colorlist(nbcolor,:)=[1 0 1];% magenta color
    1225         end
    1226         col_vec(vec_FF~=0)=nbcolor;
     1239            col_vec(vec_FF~=0)=nbcolor;
     1240        end       
    12271241    end
    12281242    %plot vectors:
  • trunk/src/series/civ_input.m

    r1141 r1143  
    8181    set(handles.CheckThreshold,'Visible','on')
    8282    set(handles.CheckDeformation,'Value',0)% desactivate
    83     set(handles.num_SubDomainSize(1),'String','250')
    84     set(handles.num_SubDomainSize(2),'String','500')
     83%     set(handles.num_SubDomainSize(1),'String','250')
     84%     set(handles.num_SubDomainSize(2),'String','500')
    8585end
    8686switch Param.Action.ActionName
     
    9797FileType='image';%fdefault
    9898FileInfo=[];
    99 if isfield(SeriesData,'FileInfo')...
     99if isfield(SeriesData,'FileInfo')
    100100    FileType=SeriesData.FileInfo{1}.FileType;% info on the first input file series
    101101    FieldType=SeriesData.FileInfo{1}.FieldType;% info on the first input file series
  • trunk/src/series/civ_series.m

    r1137 r1143  
    22% --- call the sub-functions:
    33%   civ: PIV function itself
    4 %   fix: removes false vectors after detection by various criteria
     4%   detect_false: put a flag to false vectors after detection by various criteria
    55%   filter_tps: make interpolation-smoothing
    66%------------------------------------------------------------------------
     
    2222%     Param.ActionInput: substructure with the parameters provided by the GUI civ_input
    2323%                      .Civ1: parameters for civ1cc
    24 %                      .Fix1: parameters for fix1
     24%                      .Fix1: parameters for detect_false1
    2525%                      .Patch1:
    2626%                      .Civ2: for civ2
     
    131131            iview_A=2;% the second line is used for the input images of Civ2
    132132        end
    133 %         if strcmp(Param.ActionInput.ListCompareMode,'shift')
    134 %             iview_B=iview_A+1; % the second image series is on the next line of the input table
    135 %         end
    136133        if iview_A~=0
    137134            RootPath_A=Param.InputTable{iview_A,1};
     
    237234            NbField=numel(i1_series_Civ2);
    238235        else
    239             NbField=numel(i1_series_Civ1);% no image used (only fix or patch) TO CHECK
     236            NbField=numel(i1_series_Civ1);% no image used (only detect_false or patch) TO CHECK
    240237        end
    241238
     
    347344    ImageName_A='';ImageName_B='';%default
    348345    VideoObject_A=[];VideoObject_B=[];
     346   
    349347    %% Civ1
    350348    % if Civ1 computation is requested
     
    544542    %% Fix1
    545543    if isfield (Param.ActionInput,'Fix1')
    546         disp('fix1 started')
     544        disp('detect_false1 started')
    547545        if ~isfield (Param.ActionInput,'Civ1')% if we use existing Civ1, remove previous data beyond Civ1
    548546            Fix1_attr=find(strcmp('Fix1',Data.ListGlobalAttribute));
     
    563561        nbvar=length(Data.ListVarName);
    564562        Data.VarAttribute{nbvar}.Role='errorflag';
    565         Data.Civ1_FF=int8(fix(Param.ActionInput.Fix1,Data.Civ1_F,Data.Civ1_C,Data.Civ1_U,Data.Civ1_V));
     563        Data.Civ1_FF=int8(detect_false(Param.ActionInput.Fix1,Data.Civ1_F,Data.Civ1_C,Data.Civ1_U,Data.Civ1_V));
    566564        Data.CivStage=2;
    567565    end
     
    823821        if exist('ncfile','var')
    824822            CivFile=ncfile;
    825             [Data,tild,tild,errormsg]=nc2struct(CivFile);%read civ1 and fix1 data in the existing netcdf file
     823            [Data,tild,tild,errormsg]=nc2struct(CivFile);%read civ1 and detect_false1 data in the existing netcdf file
    826824            if ~isempty(errormsg)
    827825                disp_uvmat('ERROR',errormsg,checkrun)
     
    842840    %% Fix2
    843841    if isfield (Param.ActionInput,'Fix2')
    844         disp('fix2 started')
     842        disp('detect_false2 started')
    845843        list_param=fieldnames(Param.ActionInput.Fix2)';
    846844        Fix2_param=regexprep(list_param,'^.+','Fix2_$0');% insert 'Fix1_' before  each string in ListFixParam
     
    857855                Data.VarDimName=[Data.VarDimName {'nb_vectors2'}];
    858856            end
    859             Data.vec_FixFlag=fix(Param.Fix2,Data.vec2_F,Data.vec2_C,Data.vec2_U,Data.vec2_V,Data.vec2_X,Data.vec2_Y);
     857            Data.vec_FixFlag=detect_false(Param.Fix2,Data.vec2_F,Data.vec2_C,Data.vec2_U,Data.vec2_V);
    860858        else
    861859            Data.ListVarName=[Data.ListVarName {'Civ2_FF'}];
     
    863861            nbvar=length(Data.ListVarName);
    864862            Data.VarAttribute{nbvar}.Role='errorflag';
    865             Data.Civ2_FF=double(fix(Param.ActionInput.Fix2,Data.Civ2_F,Data.Civ2_C,Data.Civ2_U,Data.Civ2_V));
     863            Data.Civ2_FF=double(detect_false(Param.ActionInput.Fix2,Data.Civ2_F,Data.Civ2_C,Data.Civ2_U,Data.Civ2_V));
    866864            Data.CivStage=Data.CivStage+1;
    867865        end
     
    12931291end
    12941292
    1295 %'RUN_FIX': function for fixing velocity fields:
    1296 %-----------------------------------------------
    1297 % RUN_FIX(filename,field,flagindex,thresh_vecC,thresh_vel,iter,flag_mask,maskname,fileref,fieldref)
    1298 %
    1299 %filename: name of the netcdf file (used as input and output)
    1300 %field: structure specifying the names of the fields to fix (depending on civ1 or civ2)
    1301 %.vel_type='civ1' or 'civ2';
    1302 %.nb=name of the dimension common to the field to fix ('nb_vectors' for civ1);
    1303 %.fixflag=name of fix flag variable ('vec_FixFlag' for civ1)
    1304 %flagindex: flag specifying which values of vec_f are removed:
    1305 % if flagindex(1)=1: vec_f=-2 vectors are removed
    1306 % if flagindex(2)=1: vec_f=3 vectors are removed
    1307 % if flagindex(3)=1: vec_f=2 vectors are removed (if iter=1) or vec_f=4 vectors are removed (if iter=2)
    1308 %iter=1 for civ1 fields and iter=2 for civ2 fields
    1309 %thresh_vecC: threshold in the image correlation vec_C
    1310 %flag_mask: =1 mask used to remove vectors (0 else)
    1311 %maskname: name of the mask image file for fix
    1312 %thresh_vel: threshold on velocity, or on the difference with the reference file fileref if exists
    1313 %inf_sup=1: remove values smaller than threshold thresh_vel, =2, larger than threshold
    1314 %fileref: .nc file name for a reference velocity (='': refrence 0 used)
    1315 %fieldref: 'civ1','filter1'...feld used in fileref
    1316 
    1317 function FF=fix(Param,F,C,U,V,X,Y)
     1293
     1294function FF=detect_false(Param,F,C,U,V)
    13181295FF=zeros(size(F));%default
    1319 
    1320 %criterium on warn flags
    1321 FlagName={'CheckFmin2','CheckF2','CheckF3','CheckF4'};
    1322 FlagVal=[-2 2 3 4];
    1323 for iflag=1:numel(FlagName)
    1324     if isfield(Param,FlagName{iflag}) && Param.(FlagName{iflag})
    1325         FF=(FF==1| F==FlagVal(iflag));
    1326     end
    1327 end
    1328 %criterium on correlation values
     1296% FF=-2, for correlation max at edge
     1297% FF=-1, for too small correlation
     1298% FF=1, for velocity outside bounds
     1299% FF=2 for exclusion by difference with the smoothed field
     1300FF(F==-2)=-2;
    13291301if isfield (Param,'MinCorr')
    1330     FF=FF==1 | C<Param.MinCorr;
     1302     FF(C<Param.MinCorr)=-1;
    13311303end
    13321304if (isfield(Param,'MinVel')&&~isempty(Param.MinVel))||(isfield (Param,'MaxVel')&&~isempty(Param.MaxVel))
    13331305    Umod= U.*U+V.*V;
    13341306    if isfield (Param,'MinVel')&&~isempty(Param.MinVel)
    1335         FF=FF==1 | Umod<(Param.MinVel*Param.MinVel);
     1307        U2Min=Param.MinVel*Param.MinVel;
     1308        FF(Umod<U2Min)=1;
    13361309    end
    13371310    if isfield (Param,'MaxVel')&&~isempty(Param.MaxVel)
    1338         FF=FF==1 | Umod>(Param.MaxVel*Param.MaxVel);
    1339     end
    1340 end
     1311         U2Max=Param.MaxVel*Param.MaxVel;
     1312        FF(Umod>U2Max)=1;
     1313    end
     1314end
     1315
     1316
     1317%criterium on warn flags
     1318% FlagName={'CheckFmin2','CheckF2','CheckF3','CheckF4'};
     1319% FlagVal=[-2 2 3 4];
     1320% for iflag=1:numel(FlagName)
     1321%     if isfield(Param,FlagName{iflag}) && Param.(FlagName{iflag})
     1322%         FF=(FF==1| F==FlagVal(iflag));
     1323%     end
     1324% end
     1325% %criterium on correlation values
     1326% if isfield (Param,'MinCorr')
     1327%     FF=FF==1 | C<Param.MinCorr;
     1328% end
     1329% if (isfield(Param,'MinVel')&&~isempty(Param.MinVel))||(isfield (Param,'MaxVel')&&~isempty(Param.MaxVel))
     1330%     Umod= U.*U+V.*V;
     1331%     if isfield (Param,'MinVel')&&~isempty(Param.MinVel)
     1332%         FF=FF==1 | Umod<(Param.MinVel*Param.MinVel);
     1333%     end
     1334%     if isfield (Param,'MaxVel')&&~isempty(Param.MaxVel)
     1335%         FF=FF==1 | Umod>(Param.MaxVel*Param.MaxVel);
     1336%     end
     1337% end
    13411338
    13421339
  • trunk/src/series/extract_rdvision.m

    r1134 r1143  
    308308%             m.Data=data;
    309309    %%%%%%%
    310         timestamp=zeros(1,numel(m.Data));
    311         for ii=1: numel(m.Data)
    312             timestamp(ii)=m.Data(ii).timestamp;
    313         end
    314         if isequal(Param.IndexRange.first_i,1)
     310    timestamp=zeros(1,numel(m.Data));
     311    for ii=1: numel(m.Data)
     312        timestamp(ii)=m.Data(ii).timestamp;
     313    end
     314    if isequal(Param.IndexRange.first_i,1)
    315315        [nbfield1,nbfield2,msg]=copyfile_modif(filexml,timestamp,newxml); %copy the xml file in the upper folder
    316316        [XmlData,errormsg]=imadoc2struct(newxml);% check reading of the new xml file
     
    319319            return
    320320        end
    321         timestamp=timestamp(1:nbfield1*nbfield2);
    322         timestamp=reshape(timestamp,nbfield2,nbfield1);
    323         difftime=XmlData.Time(2:end,2:end)'-timestamp;
    324         disp(['time from xml and timestamp differ by ' num2str(max(max(abs(difftime))))])
    325         if max(abs(difftime))>0.01
    326             checkpreserve=1;% will not erase the initial files, possibility of error
    327         end     
    328         % checking consistency with the xml file
    329         %     if ~isequal(SeqData.nb_frames,numel(timestamp))
    330         %         disp_uvmat('ERRROR',['inconsistent number of images ' num2str(SeqData.nb_frames) ' with respect to the xml file: ' num2str(numel(timestamp))] ,checkrun);
    331         %         return
    332         %     end
     321        if numel(timestamp)~=nbfield1*nbfield2
     322            disp('WARNING: total image number defined by the xml file differs from  the number of frames ')
     323        else
     324            timestamp=reshape(timestamp,nbfield2,nbfield1);
     325            difftime=XmlData.Time(2:end,2:end)'-timestamp;
     326            disp(['time from xml and timestamp differ by ' num2str(max(max(abs(difftime))))])
     327            if max(abs(difftime))>0.01
     328                checkpreserve=1;% will not erase the initial files, possibility of error
     329            end
     330        end
    333331    else
    334332       [nbfield1,nbfield2,msg]=copyfile_modif(filexml,timestamp,'');
  • trunk/src/series/test_patch_tps.m

    r1142 r1143  
    220220for index=1:1%numel(filecell)
    221221    Data=read_field(filecell{1,index},'civdata',Param.InputFields);
    222             ind_good=find(Data.FF==0|Data.FF==20);%keep good civ data, and also the ones excluded by the criterium of discrepancy betwween smoothed and raw fields (FF=20)
     222            ind_good=find(Data.FF==0|Data.FF==20|Data.FF==2);%keep good civ data, and also the ones excluded by the criterium of discrepancy betwween smoothed and raw fields (FF=2 or 20 (old convention))
    223223        NbGood=numel(ind_good);
    224224        Xin=Data.X(ind_good);
     
    252252        DataOut.(['U_' str_i{irho}])=U_smooth;
    253253        DataOut.(['V_' str_i{irho}])=V_smooth;
    254         % DataOut.FF(ind_false)=FieldSmooth(irho);
    255254    end
    256255    time=toc
  • trunk/src/tps_coeff_field.m

    r1137 r1143  
    4343Smoothing=0;
    4444end
    45 SubDomainNbPoint=300; %default, estimated nbre of data source points in a subdomain used for tps
     45SubDomainNbPoint=250; %default, estimated nbre of data source points in a subdomain used for tps
    4646if isfield(DataIn,'SubDomain')
    4747    SubDomainNbPoint=DataIn.SubDomain;%old convention
  • trunk/src/uvmat.m

    r1137 r1143  
    55695569% Vector representation
    55705570%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     5571% % %-------------------------------------------------------------------
     5572% % function CheckHideWarning_Callback(hObject, eventdata, handles)
     5573% % %-------------------------------------------------------------------
     5574% % update_plot(handles);
     5575
    55715576%-------------------------------------------------------------------
    5572 function CheckHideWarning_Callback(hObject, eventdata, handles)
     5577function CheckShowFalse_Callback(hObject, eventdata, handles)
    55735578%-------------------------------------------------------------------
    5574 update_plot(handles);
    5575 
    5576 %-------------------------------------------------------------------
    5577 function CheckHideFalse_Callback(hObject, eventdata, handles)
    5578 %-------------------------------------------------------------------
     5579if get(handles.CheckShowFalse,'Value')
     5580    set(handles.FalseCriteria,'Visible','on')
     5581    set(handles.FalseCriteria,'Value',1)
     5582else
     5583    set(handles.FalseCriteria,'Visible','off')
     5584end
     5585
    55795586update_plot(handles);
    55805587
     
    56115618    set(handles.CheckDecimate4,'Value',0)
    56125619end
     5620update_plot(handles);
     5621
     5622%------------------------------------------------------------------------
     5623% --- Executes on selection change in FalseCriteria.
     5624%------------------------------------------------------------------------
     5625function FalseCriteria_Callback(hObject, eventdata, handles)
    56135626update_plot(handles);
    56145627
     
    61956208
    61966209
     6210
     6211
     6212
Note: See TracChangeset for help on using the changeset viewer.