How to express Generalized Schuur complement using CVX?

Uncategorized
May 19, 2022
J


微信截图_20220519223926

clc,clear;
close all;
N = 10;
Nt = 4;

f = rand(Nt,1)+1i*rand(Nt,1);
C = f*f';
cvx_begin
variable F(N,Nt) complex
minimize (norm(F,'fro'))
subject to
    real((eye(Nt)-C*pinv(C))*F')==0
    eye(N)-F*pinv(C)*F'==semidefinte(N)
cvx_end
M

if you have something of the form of (2) or (3), you enter (1) as a semidefnite constraint, using standard CVX syntax. The whole point of Schur complement is that you do not directly enter semiedefinite constraints in (2) or (3), which are (nonconvex) Bilinear Matrix Inequalities( BMIs). You instead enter semidefinite constraint for (1), which is a linear (convex) SDP…

I believe generalized just refers to possible use of pseudo inverse rather than inverse in the case of a psd matrix which is singular (not strictly positive definite).

J
Replying to #2

i have the constraint 微信截图_20220519224724 ,where F is the optimization variable, i want to convert this constraint to LMI using Generalized Schuu complement.

M

This is just a standard Schur complement, with A = eye(N), B = F*f, C = 1. which matches (3). Hence enter (1) in CVX.

[eye(N) F*f;(F*f)' 1] == hermitian_semidefinite(N+1)

J
Replying to #4

ok,thank you very much.

M

Whoops. Make that hermitian_semidefinite(N+1), which I just corrected (N+1, not N).

Or use sdp mode, in which case can you can just use ...>= 0. I don’t know why with ==semidefinite, CVX makes you put in the dimension. It ought to be able to figure out the dimension itself, as it does in sdp mode.

J
Replying to #6

ok,thank you very much.