Not enough input arguments error/making a function using @ error.

Hi, I'm trying to do an optimization in matlab for the first time. However, I still don't get how to declare the function using @. I'm trying to do a barrier function method. I've made a function files ObjFun.m and Constr.m and now I'm declaring the barrier function as:
X = [6 6];
penalty_r = 0.5;
f = @ (x) ObjFun - penalty_r .* log(Constr);
and trying to solve:
sol = fminunc(f,X)
and after that proceeds with the rest of the algorithm.
My question is, I always have problems with the declaring function f that consists of other functions like ObjFun and Constr. Such as: not enough input arguments.
How should I declare this?
Please help.
I'm using Matlab R2015b

 채택된 답변

Star Strider
Star Strider 2016년 3월 31일
You didn’t post ‘ObjFun’, but assuming it is also a function of ‘x’, you need to call it as a function in your anonymous function:
f = @ (x) ObjFun(x) - penalty_r .* log(Constr);
I assume ‘Constr’ is a constant scalar that you’ve already defined in your workspace.

추가 답변 (0개)

카테고리

질문:

2016년 3월 31일

댓글:

2016년 4월 13일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by