Main Content

## Matrix Arguments

Optimization Toolbox™ solvers accept vectors for many arguments, such as the initial point `x0`, lower bounds `lb`, and upper bounds `ub`. They also accept matrices for these arguments, where matrix means an array of any size. When your solver arguments are naturally arrays, not vectors, feel free to provide the arguments as arrays.

Here is 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`, or the "Indexing with a Single Index" section of Array Indexing.

• 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.

Download now