MATLAB: Error using ‘constraints’ Too many output arguments – Please advise

Optimization Toolboxtoo many output arguments

I created two .m files (1) fm (2) eqcst
function y = fm(x)
y=(x(3)^2*(x(3)^2/2 + x(1)^2)) +( x(4)^2*(x(4)^2/2 + x(2)^2));
end
function c=eqcst(x)
c=(x(1)*x(3)*x(3))-(x(2)*x(4)*x(4));
end
Using fmincon
[xfinal,fval,exitflag,output]=fmincon(@fm,[0.1,0.1,0.1,0.1],[],[],[],[],[],[],@eqcst,options)
gives the error
Error using eqcst
Too many output arguments.
Error in fmincon (line 623)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});
Caused by:
Failure in initial nonlinear constraint function evaluation. FMINCON cannot continue.

Best Answer

Non-linear constraint function must always return two output variables, one for non-linear inequality and one for non-linear equalities. If you do not have any non-linear equalities, then return [] for the second output. (Though your use of "eq" suggests that perhaps that is the nonlinear equalities, so perhaps it should be the first output that should be set to [])