How can I use structs as x input for Matlabs optimization methods?
    10 views (last 30 days)
  
       Show older comments
    
    Carolin Katzschke
 on 3 Jun 2015
  
    
    
    
    
    Commented: Carolin Katzschke
 on 4 Jun 2015
            My functions look like that:
function area_rectangle = area_rectangle(input_variables)
      if ~isfield(input_variables,'height') || ~isfield(input_variables,'width') 
          area_rectangle = NaN;
      else    
          area_rectangle = input_variables.width * input_variables.height;
      end
Suppose I want to use one of Matlabs optimization methods, e.g. fmincon, and pass a struct as input. How could I do that?
fmincon(@area_rectangle, input_variables, ...)
Error using fmincon (line 224)
FMINCON requires the following inputs to be of data type double: 'X0'.
Thanks in advance! Carolin
0 Comments
Accepted Answer
  Walter Roberson
      
      
 on 3 Jun 2015
        You would not do that. Remember that the optimization routines control the values of x themselves, adjusting its value until the optimum value is found. The optimization routines have no idea how to update a struct.
You would instead use one of the optimization routines that can work on vectors of values, and you would pass the values of the fields as elements of x. For example,
function area = calc_area(x)
  height = x(1,:);
  width = x(2,:);
  area = height .* width;
end
More Answers (1)
See Also
Categories
				Find more on Structures in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

