www.pudn.com > Classification_toolbox.part01.rar > enter_distributions_commands.m


function enter_distributions_commands(command, param) 
 
%This functions handles callbacks from the enter_distributions GUI 
 
switch command 
case 'change_parameter' 
   %When there are changes to one of the parameters of an object, save it to file. 
   %Used by the manual entry screen. 
    
   load synthetic 
    
   tag			= get(param, 'Tag'); 
   val 			= get(findobj('Tag', 'popNumber'), 'Value'); 
   zero_or_one = ~get(findobj('Tag', 'rbtClass0'), 'Value'); 
   num			= str2num(get(param, 'String')); 
    
   switch tag 
   case 'txtMeanX' 
      if zero_or_one, 
         distribution_parameters(2).mu(val,1) = num; 
      else 
         distribution_parameters(1).mu(val,1) = num; 
      end 
   case 'txtMeanY' 
      if zero_or_one, 
         distribution_parameters(2).mu(val,2) = num; 
      else 
         distribution_parameters(1).mu(val,2) = num; 
      end 
   case 'txtWeight' 
      if zero_or_one, 
         distribution_parameters(2).w(val) = num; 
      else 
         distribution_parameters(1).w(val) = num; 
      end 
   case 'txtCov11' 
      if zero_or_one, 
         distribution_parameters(2).sigma(val,1,1) = num; 
      else 
         distribution_parameters(1).sigma(val,1,1) = num; 
      end 
   case 'txtCov12' 
      if zero_or_one, 
         distribution_parameters(2).sigma(val,1,2) = num; 
      else 
         distribution_parameters(1).sigma(val,1,2) = num; 
      end 
   case 'txtCov21' 
      if zero_or_one, 
         distribution_parameters(2).sigma(val,2,1) = num; 
      else 
         distribution_parameters(1).sigma(val,2,1) = num; 
      end 
   case 'txtCov22' 
      if zero_or_one, 
         distribution_parameters(2).sigma(val,2,2) = num; 
      else 
         distribution_parameters(1).sigma(val,2,2) = num; 
      end 
   end 
    
   save synthetic distribution_parameters 
    
case 'change_class' 
   %Change the display of a class, when one of the radio buttons is pressed. 
   %Used by the manual entry screen. 
    
   load synthetic 
    
   h0 = findobj('Tag', 'rbtClass0');        
   h1 = findobj('Tag', 'rbtClass1');        
   h  = findobj('Tag', 'txtCount'); 
   hp = findobj('Tag', 'popNumber');                                                                      
   n0 = size(distribution_parameters(1).sigma,1); 
   n1 = size(distribution_parameters(2).sigma,1); 
    
   if param, 
      set(h0, 'Value', not(get(h1, 'Value'))); 
   else 
      set(h1, 'Value', not(get(h0, 'Value'))); 
   end 
    
    
   %Set the number of objects (if they exist) 
   if (get(h0, 'Value')) 
      if (n0>0), 
         set(h, 'String', ['There are ' num2str(n0) ' distributions in this class']) 
         s = cell(n0, 1);                                                                                     
         for i=1:n0,                                                                                          
            s(i) =  cellstr(num2str(i));                                                                       
         end                                                                                                   
         set(hp, 'String', s')                                                                                  
         set(hp, 'Value', 1)                                                                                  
         set(hp, 'Max', n0);                                                                                   
      end 
   else 
      if (n1>0), 
         set(h, 'String', ['There are ' num2str(n1) ' distributions in this class']) 
         s = cell(n1, 1);                                                                                     
         for i=1:n1,                                                                                          
            s(i) =  cellstr(num2str(i));                                                                       
         end                                                                                                   
         set(hp, 'String', s')                                                                                  
         set(hp, 'Value', 1)                                                                                  
         set(hp, 'Max', n1);                                                                                      
      end 
   end 
    
   enter_distributions_commands('change_object') 
    
case 'change_object' 
   %When the user selects a different object, change the display to show that object. 
   %Used by the manual entry screen. 
    
   load synthetic 
    
   h 	= findobj('Tag', 'popNumber'); 
   ht   = findobj('Tag', 'popType'); 
   hm1  = findobj('Tag', 'txtMeanX'); 
   hm2 	= findobj('Tag', 'txtMeanY'); 
   hw 	= findobj('Tag', 'txtWeight'); 
   hs11 = findobj('Tag', 'txtCov11'); 
   hs12 = findobj('Tag', 'txtCov12'); 
   hs21 = findobj('Tag', 'txtCov21'); 
   hs22 = findobj('Tag', 'txtCov22'); 
   hc   = findobj('Tag', 'txtCovCaption'); 
    
   val = get(h, 'Value'); 
    
   if get(findobj('Tag', 'rbtClass0'), 'Value') 
      %Class 0 selected 
      set(hm1,  'String', distribution_parameters(1).mu(val,1)) 
      set(hm2,  'String', distribution_parameters(1).mu(val,2)) 
      set(hs11, 'String', distribution_parameters(1).sigma(val,1,1)) 
      set(hs12, 'String', distribution_parameters(1).sigma(val,1,2)) 
      set(hs21, 'String', distribution_parameters(1).sigma(val,2,1)) 
      set(hs22, 'String', distribution_parameters(1).sigma(val,2,2)) 
      set(hw,   'String', distribution_parameters(1).w(val)) 
      if (strcmp(distribution_parameters(1).type(val), 'Gaussian')) 
          set(ht,   'Value',  1); 
          set(hs21, 'Visible', 'on'); 
          set(hs22, 'Visible', 'on'); 
          set(hc, 'String', 'Covariance of the Gaussian:');  
      else 
          set(ht,   'Value',  2); 
          set(hs21, 'Visible', 'off'); 
          set(hs22, 'Visible', 'off'); 
          set(hc, 'String', 'Width of the distribution:');  
      end 
   else 
      %Class 1 selected 
      set(hm1,  'String', distribution_parameters(2).mu(val,1)) 
      set(hm2,  'String', distribution_parameters(2).mu(val,2)) 
      set(hs11, 'String', distribution_parameters(2).sigma(val,1,1)) 
      set(hs12, 'String', distribution_parameters(2).sigma(val,1,2)) 
      set(hs21, 'String', distribution_parameters(2).sigma(val,2,1)) 
      set(hs22, 'String', distribution_parameters(2).sigma(val,2,2)) 
      set(hw,   'String', distribution_parameters(2).w(val)) 
      if (strcmp(distribution_parameters(2).type(val), 'Gaussian')) 
          set(ht,   'Value',  1); 
          set(hs21, 'Visible', 'on'); 
          set(hs22, 'Visible', 'on'); 
      else 
          set(ht,   'Value',  2); 
          set(hs21, 'Visible', 'off'); 
          set(hs22, 'Visible', 'off'); 
      end 
   end    
case 'change_type' 
   val 			= get(findobj('Tag', 'popNumber'), 'Value'); 
   zero_or_one  = ~get(findobj('Tag', 'rbtClass0'), 'Value'); 
   ht           = findobj('Tag', 'popType'); 
   hs21         = findobj('Tag', 'txtCov21'); 
   hs22         = findobj('Tag', 'txtCov22'); 
   hc           = findobj('Tag', 'txtCovCaption'); 
   st           = get(ht, 'String'); 
    
   if (get(ht, 'Value') == 1) 
       %Gaussian 
       set(hc, 'String', 'Covariance of the Gaussian:');  
       set(hs21, 'Visible', 'on'); 
       set(hs22, 'Visible', 'on'); 
   else 
       %Uniform 
       set(hc, 'String', 'Width of the distribution:');  
       set(hs21, 'Visible', 'off'); 
       set(hs22, 'Visible', 'off'); 
   end 
       
   load synthetic 
   distribution_parameters(zero_or_one+1).type(val) = st(get(ht, 'Value'));      
   save synthetic distribution_parameters 
 
   enter_distributions_commands('change_object') 
 
otherwise 
   error('Unknown command') 
end