MATLAB: Write nonlinear constraint to fmincon

fminconnonlinearoptimizationOptimization Toolbox

I am using fmincon to optimize a vectorized function (myfun) of five variables (x). This function has also some parameters (k, l, m, n) which I am passing to fmincon. What I am doing is shown below:
p=@(x)myfun(x, k, l, m, n);
[xmin, pmin]=fmincon(p, x0, A, b, Aeq, beq, lb, ub, nonlcon, options);
My question is how am I going to write the nonlinear equality which I have in my problem. I have written another function about the nonlinear equality in which x is the variables used in myfun and L is a parameter that I would like to pass inside the constraint. See below:
function [c,ceq]=pitch(x,L)
c=[];
ceq=x(3)*x(5)-L;
end
The problem is that I don't know how to write inside the fmincon the constraint. I have written this:
nonlcon=@(x)pitch(x,L)
which results in an error. I would appreciate your answers. Thank you.

Best Answer

Thanks for the error, it appears that your objective function myfun takes 'x' as a 4x1 vector while your nonlinear constraint assumes that there is atleast x(5) in the line:
ceq=x(3)*x(5)-L;
that is atleast a 5x1 vector.
You might want to check that.