1 | clear all |
---|
2 | |
---|
3 | yalmip('clear') |
---|
4 | alfa=1; |
---|
5 | n = 6; |
---|
6 | |
---|
7 | load Q.mat |
---|
8 | w = -0.5; |
---|
9 | Qg = frsp(Qde,10^w); |
---|
10 | M0 = Qg(1:length(Qg)-1,1:length(Qg)-1); |
---|
11 | |
---|
12 | d1 = sdpvar(1,1); d2 = sdpvar(1,1); d3 = sdpvar(1,1); d4 = sdpvar(1,1); d5 = sdpvar(1,1); |
---|
13 | d = diag([d1 d2 d3 d4 d5 d5]); |
---|
14 | |
---|
15 | h1 = sdpvar(1,1); h2 = sdpvar(1,1); h3 = sdpvar(1,1); h4 = sdpvar(1,1); |
---|
16 | h = diag([h1 h2 h3 h4 0 0]); |
---|
17 | |
---|
18 | o = zeros(2*n,2*n); |
---|
19 | I = eye(2*n); |
---|
20 | |
---|
21 | M1 = real(M0); M2 = imag(M0); |
---|
22 | M = [M1 M2; -M2 M1]; |
---|
23 | jM = [-M2 M1;-M1 -M2]; |
---|
24 | |
---|
25 | % Define D & increase size to account for complex numbers |
---|
26 | D1 = d; D2 = zeros(n,n); |
---|
27 | D = [D1 D2; -D2 D1]; |
---|
28 | |
---|
29 | % Define H such that G=D'H and increase size to account for complex numbers |
---|
30 | H1 = h; H2 = zeros(n,n); |
---|
31 | H = [H1 H2; -H2 H1]; |
---|
32 | jH = [-H2 H1;-H1 -H2]; |
---|
33 | |
---|
34 | W = [ I D*M-jH o o; |
---|
35 | M'*D'+jH' o alfa*D' H'; |
---|
36 | o alfa*D -I o; |
---|
37 | o H o -I]; |
---|
38 | |
---|
39 | Y = sdpvar(8*n,8*n,'symmetric'); |
---|
40 | Z = sdpvar(8*n,8*n,'symmetric'); |
---|
41 | |
---|
42 | L = lmi(d-1e-3); |
---|
43 | L = addlmi(L,[Y W;W' Z]); |
---|
44 | |
---|
45 | objective = trace(Y)+trace(Z); |
---|
46 | |
---|
47 | options = sdpsettings('Solver','sedumi','sedumi.maxiter',2); |
---|
48 | options.sedumi.alg = 2; |
---|
49 | options.sedumi.theta = 0.5; |
---|
50 | options.sedumi.beta = 0.5; |
---|
51 | options.sedumi.eps = 1e-3; |
---|
52 | |
---|
53 | solution = solvesdp(L,[],objective,options); |
---|
54 | |
---|
55 | W = double(W); |
---|
56 | D = double(D); |
---|
57 | D = D(1:n,1:n); |
---|
58 | H = double(H); |
---|
59 | H = H(1:n,1:n); |
---|
60 | M = M1+j*M2; |
---|
61 | G = D'*H; |
---|
62 | |
---|
63 | MM = M'*D*M+j*(G*M-M'*G)-alfa*D; |
---|
64 | |
---|
65 | lambda = eig(MM); |
---|