2012-11-30 56 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線被調用。