Solvers accept matrix initial point x0, where
matrix means an array of any size. They also accept matrix bounds lb and ub.
Here's how solvers handle matrix arguments.
Internally, solvers convert matrix arguments into
vectors before processing. For example, x0 becomes x0(:).
For an explanation of this syntax, see the A(:) entry
in colon.
For output, solvers reshape the solution x to
the same size as the input x0.
When x0 is a matrix, solvers pass x as
a matrix of the same size as x0 to both the objective
function and to any nonlinear constraint function.
Linear constraints, though,
take x in vector form, x(:).
In other words, a linear constraint of the form
A*x ≤ b or Aeq*x
= beq
takes x as a vector, not a matrix. Ensure
that your matrix A or Aeq has
the same number of columns as x0 has elements,
or the solver will error.