2012-11-30 31 views
2

我知道它的一个愚蠢的问题,但我不知道如何解决它...可以说我有这样的:MATLAB:fmincon,变量传递到nonlcon

x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon) 

,稍后:

function [c,ceq] = mycon(x) 
c = ...  
ceq = ... 

如何通过其他变量为@mycon,如

function [c,ceq] = mycon(x, variable) 
if variable == 1 
    c = ...  
    ceq = ... 
else 
    c = ...  
    ceq = ... 
end 

谢谢:)

回答

3

您传递mycon匿名函数:

x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@(xx)mycon(xx,variable)) 

注意variable固定在此刻fmincon线被调用。