# How to define a new variable structure in cvx

I want to define a matrix which can be comprised of pairwise kronecker products of a (m-1) dimensional skew-symmetric matrix and a (n-1) dimensional skew-symmetric matrix.

Are both matrices (arguments of kron) CVX variables? If so, you are out of luck, due to it being a non-DCP compliant quadratic.

 help cvx/kron

Disciplined convex/geometric programming information for kron:
kron(X,Y) computes scalar products between every element of X and
every element of Y. Each of those scalar products must obey the
DCP or DGP ruleset.


If one of the arguments to kron is not a CVX variable and the other is, then just use kron in a straightforward way, and thew result will be a CVX affine expression (matrix).

Just the Kronecker products are variables, but I can’t find a proper description in cvx/structures.

I don’t understand what you mean by “Just the Kronecker products are variables”. Can you describe (write out mathematically or in MATLAB/CVX code, even if not all valid code) in a more detailed way what you are actually trying to do, paying careful attention to the distinction between MATLAB variables and CVX variables?

I want to define a matrix(say A) with the following structure: this matrix can be comprised into a kronecker product of two skew-symmetric matrices(say A=kron(B,C) )… The defined matrix is the variable ( A ), and we don’t need to calculate B and C. But how to describe the structure of matrix variable A?

Are you saying that you wish to define a matrix A as a CVX variable, and then impose the constraint that A is the kronecker product of two skew-symmetric matrices, B and C? If so, I don’t see how to do that other than declaring B and C to be skew-symmetric CVX variables, and then A = kron(B,C). But this is not allowed by CVX and is not convex. Fundamentally, your constraint, as I interpret it, is not convex, and therefore can not be modeled in CVX.

If you consider the case in which B and C are both 1 by 1 CVX variables, then kron(B,C) = B * C, which is indefinite, and therefore not convex. Well, things don’t get any better as you go to higher dimensions.

yep, so it make me confused. I just want to use theorem 6.5.1 in book ‘robust optimization’ (page 173) and the theorem can be described as

And the set \mathcal{L}_{m,n} is the linear span of the Kronecker products S\otimes T of all skew-symmetric real (n-1) \times (n-1) matrices S and skew-symmetric real (m-1) \times (m-1) ) matrices T. \textbf{X} is a variable and i have to define it in cvx.

I’ll have to leave it to others to figure out what this theorem is saying.

Robust optimization is often, perhaps even usually, non-convex. And a simple Kronecker product of two matrices certainly is. I doubt you can do what you’re seeking to do in CVX.

The theorem i mentioned is a common method in solving robust beamforming design problems, and i guess somebody may use it in cvx.

They won’t if it’s not convex.