14.2.39 Class Var¶
- mosek::fusion::Var¶
Contains several static methods for manipulating variable objects and creating new variables from old ones.
Primal and dual solution values and additional operations on variables are available from the
Variable
class.- Static members:
Var.compress – Reshape a variable object by removing all dimensions of size 1.
Var.empty – Produce a new empty variable of the given shape.
Var.flatten – Create a one-dimensional logical view of a variable object.
Var.hrepeat – Repeat a variable a number of times in the second dimension.
Var.hstack – Stack a list of variables horizontally (i.e. along the second dimension).
Var.promote – Pad variable shape.
Var.repeat – Repeat a variable a number of times in the given dimension.
Var.reshape – Create a reshaped view of the given variable.
Var.stack – Stack a list of variables in an arbitrary dimension.
Var.vrepeat – Repeat a variable a number of times in the first dimension.
Var.vstack – Stack a list of variables vertically (i.e. along the first dimension).
- Var.compress¶
Variable::t Var::compress(Variable::t v)
Reshape a variable object by removing all dimensions of size 1. The result contains the same number of elements, but all dimensions are larger than 1 (except if the original variable contains exactly one element).
- Var.empty¶
Variable::t Var::empty(shared_ptr<ndarray<int,1>> shape)
Produce a new empty variable of the given shape.
- Parameters:
shape
(int
[]) – The shape of a variable.- Return:
(
Variable
)
- Var.flatten¶
Variable::t Var::flatten(Variable::t v)
Create a one-dimensional
Variable
object that represents a logical view of the \(k-\)dimensional variable \(V\). The \(V\) matrix is traversed starting from the innermost dimension. For a two-dimensional matrix this means it is traversed row after row.The returned view is a one-dimensional array of size equal to the product of dimensions of \(V\).
- Var.hrepeat¶
Variable::t Var::hrepeat(Variable::t v, int n)
Repeat a variable a number of times in the second dimension. This is equivalent to horizontal stacking of \(n\) copies of the variable; see
Var.hstack
.
- Var.hstack¶
Variable::t Var::hstack(shared_ptr<ndarray<Variable::t,1>> v) Variable::t Var::hstack(Variable::t v1, Variable::t v2) Variable::t Var::hstack(Variable::t v1, Variable::t v2, Variable::t v3)
Stack a list of variables horizontally (i.e. along the second dimension). The variables must have the same shape, except for the second dimension.
For example, if \(x^1,x^2,x^3\) are three one-dimensional variables of length \(n\) then their horizontal stack is the matrix variable
\[\begin{split}\left[ \begin{array}{ccc} | & | & | \\ x^1 & x^2 & x^3 \\ | & | & | \end{array}\right]\end{split}\]of shape
(n,3)
.
- Var.promote¶
Variable::t Var::promote(Variable::t v, int nd)
Pad the variable shape up to
nd
dimensions.
- Var.repeat¶
Variable::t Var::repeat(Variable::t v, int n, int dim) Variable::t Var::repeat(Variable::t v, int n)
Repeat a variable a number of times in the given dimension. If
dim
is non-negative this is equivalent to stacking \(n\) copies of the variable in dimensiondim
; seeVar.stack
.If
dim
is negative then a new dimension is added in front, so the new variable has shape(n, v.shape())
.The default is repeating in the first dimension as in
Var.vrepeat
.
- Var.reshape¶
Variable::t Var::reshape(Variable::t v, shared_ptr<ndarray<int,1>> shape) Variable::t Var::reshape(Variable::t v, int d1, int d2) Variable::t Var::reshape(Variable::t v, int d1)
Create a reshaped view of the given variable.
- Var.stack¶
Variable::t Var::stack(int dim, Variable::t v1, Variable::t v2) Variable::t Var::stack(int dim, Variable::t v1, Variable::t v2, Variable::t v3) Variable::t Var::stack(int dim, shared_ptr<ndarray<Variable::t,1>> v) Variable::t Var::stack(Variable::t v1, Variable::t v2, int dim) Variable::t Var::stack(Variable::t v1, Variable::t v2, Variable::t v3, int dim) Variable::t Var::stack(shared_ptr<ndarray<Variable::t,1>> v, int dim) Variable::t Var::stack(shared_ptr<ndarray<Variable::t,2>> vlist)
Stack a list of variables along an arbitrary dimension. All variables must have the same shape, except for dimension
dim
.For example, suppose \(x,y\) are two matrix variables of shape \(n\times m\). Then stacking them in the first dimension produces a matrix variable of shape
(2n,m)
:\[\begin{split}\left[\begin{array}{c}x\\ y\end{array}\right],\end{split}\]stacking them in the second dimension produces a matrix variable of shape
(n,2m)
:\[\left[\begin{array}{cc}x & y\end{array}\right],\]and stacking them in the third dimension produces a three-dimensional variable of shape
(n,m,2)
.The version which takes a two-dimensional array of variables constructs a block matrix variable with the given variables as blocks. The dimensions of the blocks must be suitably compatible. The variables may be more than two-dimensional, if they have the same size in the remaining dimensions; the block stacking still takes place in the first and second dimension.
- Parameters:
- Return:
(
Variable
)
- Var.vrepeat¶
Variable::t Var::vrepeat(Variable::t v, int n)
Repeat a variable a number of times in the first dimension. This is equivalent to vertically stacking of \(n\) copies of the variable; see
Var.vstack
.
- Var.vstack¶
Variable::t Var::vstack(shared_ptr<ndarray<Variable::t,1>> v) Variable::t Var::vstack(Variable::t v1, Variable::t v2) Variable::t Var::vstack(Variable::t v1, Variable::t v2, Variable::t v3)
Stack a list of variables vertically (i.e. along the first dimension). The variables must have the same shape, except for the first dimension.
For example, if \(y^1,y^2,y^3\) are three horizontal vector variables of length \(n\) (and shape
(1,n)
) then their vertical stack is the matrix variable\[\begin{split}\left[ \begin{array}{c}- y^1 - \\ - y^2 - \\ - y^3 - \end{array}\right]\end{split}\]of shape
(3,n)
.