cone is used to define the constraint \(\left \lvert x \right\rvert_2 \leq y\) without invoking the overhead of using the norm operator.


c = cone(x,y)


Constraining the Euclidean norm of a vector to be less than 1 is done with

x = sdpvar(n,1);
F = cone(x,1);

An alternative form is

F = cone([1;x]);

Of course, arbitrary complicated constructs are possible, such as constraining the norm of the diagonal to be less than the sum of the off-diagonal terms in a matrix.

x = sdpvar(n,n);
F = cone(diag(x),sum(sum(x-diag(diag(x)))))

An alternative is to use the norm operator instead (see the examples on nonlinear operators for details)

x = sdpvar(n,n);
F = norm(diag(x)) <= sum(sum(x-diag(diag(x))))

The benefit of using the cone command is that the overhead in YALMIP is reduced (no convexity analysis is required).

The operator can be used in a vectorized form. The following model

x = sdpvar(n,1);
y = sdpvar(n,1);
F = [cone(x,1), cone(y,2)]

is equivalent to

x = sdpvar(n,1);
y = sdpvar(n,1);
F = [cone([1 2;
           x y])]

Leave a Comment