www.gusucode.com > classification_matlab_toolbox分类方法工具箱源码程序 > code/Classification_toolbox/process_params.m

    function [p1, p2, p3, p4, p5, p6, p7, p8, p9, p10] = process_params(params)

%This function recieves a parameter vector and returns it's components
[p1, p2, p3, p4, p5, p6, p7, p8, p9, p10] = deal([]);

if isnumeric(params),
   %The parameter vector is completely numeric. This is much simpler
   for i = 1:length(params),
      eval(['p' num2str(i) ' = ' num2str(params(i)) ';']);
   end
	Nassigned = length(params);   
else
	comma_loc       = findstr(params,',');
   Nassigned		 = 0;
   
	%First, locate any sub-parameter vectors
	bracket_loc1	= findstr(params,'[');
   bracket_loc2	= findstr(params,']');
   if (length(bracket_loc1) ~= length(bracket_loc2)),
      error('The number of opening and closing brackets in the parameter vectors is not equal!')
   end
   
   switch length(bracket_loc1),
   case 0
      error('No opening brackets in the parameter vector!')
   case 1
      if ((bracket_loc1 == 1) & (bracket_loc2 == length(params))),
         %This are just the usual opening and closing brackets
         params			= [',', params(2:end-1), ','];
			comma_loc      = findstr(params,',');
      else
         error('There are erroneous square brackets in the parameter vector!')
      end
   otherwise
      if ((bracket_loc1(1) == 1) & (bracket_loc2(end) == length(params))),      
         params			= [',', params(2:end-1), ','];
         bracket_loc1	= bracket_loc1(2:end);
         bracket_loc2	= bracket_loc2(1:end-1);
			comma_loc      = findstr(params,',');
      end
      for i = 1:length(bracket_loc1),
         %Find the next comma after the closing bracket
         close_loc	= bracket_loc2(i);
         open_loc		= bracket_loc1(i);
         close_comma = find(comma_loc < open_loc);
         close_comma = close_comma(end);
         eval(['p' num2str(close_comma) ' = ' params(open_loc:close_loc) ';']);
         Nassigned	= Nassigned + 1;
      end
      
      %Now remove these sub-parameters
      for i = 1:length(bracket_loc1),
			bracket_loc1	= findstr(params,'['); bracket_loc1 = bracket_loc1(1);
         bracket_loc2	= findstr(params,']'); bracket_loc2 = bracket_loc2(1);
         if (bracket_loc1 ~= bracket_loc2 - 1),
            params			= params([1:bracket_loc1-1,bracket_loc2+1:end]);
            Nassigned		= Nassigned - 1;
         end
      end
      
   end
   
   %Now assign the remaining parameters to p's
	comma_loc      = findstr(params,',');
   for i = 1:length(comma_loc)-1,
      if (eval(['isempty(p' num2str(i) ')'])),
         tempp			= params(comma_loc(i)+1:comma_loc(i+1)-1);
         eval(['p' num2str(i) ' = ' deblank(tempp) ';']);
         Nassigned	= Nassigned + 1;
      end
   end
   
end

if (Nassigned ~= nargout),
   warning('Not all parameters in the parameter vector were read by the algorithm')
end