cvx_solver Mosek
cvx_save_prefs
cvx_begin quiet
variable W_r(N,N) hermitian semidefinite
variable W_t(N,N) hermitian semidefinite
variable F_f(J,J) hermitian semidefinite
variables lamda_br chi_br(L1)
variables lamda_jr chi_jr(L1)
variables lamda_bt chi_bt(L2)
variables lamda_jt chi_jt(L2)
variables x1 x2
expressions T_burr T_bu_rr T_jurr …
T_butt T_bu_tt T_jutt …
A_br(M+1,M+1,L1) A_bt(M+1,M+1,L2)…
A_jr(M+1,M+1,L1) A_jt(M+1,M+1,L2)…
B1t(M,M,L2) B2t(M,1,L2) B3t(1,M,L2) B4t(1,L2)…
J1t(M,M,L2) J2t(M,1,L2) J3t(1,M,L2) J4t(1,L2)…
B1r(M,M,L1) B2r(M,1,L1) B3r(1,M,L1) B4r(1,L1)…
J1r(M,M,L1) J2r(M,1,L1) J3r(1,M,L1) J4r(1,L1)…
Pha1_r Pha2_r Pha1_t Pha2_t
%%%%r区
T_bur=(trace(HH_bu_rWr));%%%%%SDR开始
T_bu_r=(trace(HH_bu_rWt));
T_jur=trace(GG_ju_r*Ff);
t_ur=1/((T_bu_r+T_jur)+a0);
T_burr=trace(HH_bu_r*W_r);
T_bu_rr=trace(HH_bu_r*W_t);
T_jurr=trace(GG_ju_r*F_f);
Pha1_r=real(-t_ur*((T_bu_rr+T_jurr)+a0)+log(t_ur)+1)+...
log_det(real(T_burr+(T_bu_rr+T_jurr)+a0));
%%%%t区
T_but=trace(HH_bu_t*Wt);%%%%%SDR开始
T_bu_t=trace(HH_bu_t*Wr);
T_jut=trace(GG_ju_t*Ff);
t_ut=1/((T_bu_t+T_jut)+a0);%%%%%引用引理
T_butt=trace(HH_bu_t*W_t);%%%%%SDR开始
T_bu_tt=trace(HH_bu_t*W_r);
T_jutt=trace(GG_ju_t*F_f);
Pha1_t=real(-t_ut*((T_bu_tt+T_jutt)+a0)+log(t_ut)+1)+...
log_det(real(T_butt+T_bu_tt+T_jutt+a0));
for l1=1:L1
B1r(:,:,l1)=lamda_br*eye(M)-h_be_r*W_r*h_be_r';
B2r(:,:,l1)=-h_be_r*W_r*h_be_r'*H_ie_r(:,l1);
B3r(:,:,l1)=-H_ie_r(:,l1)'*h_be_r*W_r*h_be_r';
B4r(:,l1)=-lamda_br*S_be^(2)-...
H_ie_r(:,l1)'*h_be_r*W_r*h_be_r'*H_ie_r(:,l1)+chi_br(l1) ;
A_br(:,:,l1)=[B1r(:,:,l1),B2r(:,:,l1);B3r(:,:,l1),B4r(:,l1)];
Gamma_wr=trace(Wrx*(H_ie_r(:,l1)*H_ie_r(:,l1)'+S_be^(2)*eye(M)+...
2*S_be*sqrt(eye(M)*(H_ie_r(:,l1)'*Wrx*H_true_br(:,l1))/trace(Wrx))));
J1r(:,:,l1)=lamda_jr*eye(M)+h_je_r*F_f*h_je_r';
J2r(:,:,l1)=h_je_r*F_f*h_je_r'*H_ie_r(:,l1);
J3r(:,:,l1)=H_ie_r(:,l1)'*h_je_r*F_f*h_je_r';
J4r(:,l1)=-lamda_jr*S_je^(2)+...
H_ie_r(:,l1)'*h_je_r*F_f*h_je_r'*H_ie_r(:,l1)-chi_jr(l1) ;
A_jr(:,:,l1)=[J1r(:,:,l1),J2r(:,:,l1);J3r(:,:,l1),J4r(:,l1)];
Gamma_fr=trace(Frx*(H_ie_r(:,l1)*H_ie_r(:,l1)'+S_je^(2)*eye(M)-...
2*S_je*sqrt(eye(M)*(H_ie_r(:,l1)'*Frx*H_true_jr(:,l1))/trace(Frx))));
t1=(Gamma_wr+Gamma_fr+a0)^(-1);
Pha2_r(:,l1)=real(t1*(chi_br(l1)+chi_jr(l1)+a0)-log(t1)-1)-log_det(real(chi_br(l1)+a0));
end
for l2=1:L2
B1t(:,:,l2)=lamda_bt*eye(M)-h_be_t*W_t*h_be_t';
B2t(:,:,l2)=-h_be_t*W_t*h_be_t'*H_ie_t(:,l2);
B3t(:,:,l2)=-H_ie_t(:,l2)'*h_be_t*W_t*h_be_t';
B4t(:,l2)=-lamda_bt*S_be^(2)-...
H_ie_t(:,l2)'*h_be_t*W_t*h_be_t'*H_ie_t(:,l2)+chi_bt(l2) ;
A_bt(:,:,l2)=[B1t(:,:,l2),B2t(:,:,l2);B3t(:,:,l2),B4t(:,l2)];
Gamma_wt=trace(Wtx*(H_ie_t(:,l2)*H_ie_t(:,l2)'+S_be^(2)*eye(M)+...
2*S_be*sqrt(eye(M)*(H_ie_t(:,l2)'*Wtx*H_true_bt(:,l2))/trace(Wtx))));
J1t(:,:,l2)=lamda_jt*eye(M)+h_je_t*F_f*h_je_t';
J2t(:,:,l2)=h_je_t*F_f*h_je_t'*H_ie_t(:,l2);
J3t(:,:,l2)=H_ie_t(:,l2)'*h_je_t*F_f*h_je_t';
J4t(:,l2)=-lamda_jt*S_je^(2)+...
H_ie_t(:,l2)'*h_je_t*F_f*h_je_t'*H_ie_t(:,l2)-chi_jt(l2) ;
A_jt(:,:,l2)=[J1t(:,:,l2),J2t(:,:,l2);J3t(:,:,l2),J4t(:,l2)];
Gamma_ft=trace(Ftx*(H_ie_t(:,l2)*H_ie_t(:,l2)'+S_je^(2)*eye(M)-...
2*S_je*sqrt(eye(M)*(H_ie_t(:,l2)'*Ftx*H_true_jt(:,l2))/trace(Ftx))));
t2=(Gamma_wt+Gamma_ft+a0)^(-1);
Pha2_t(:,l2)=real(t2*(chi_bt(l2)+chi_jt(l2)+a0)-log(t2)-1)-log_det(real(chi_bt(l2)+a0));
end
maximize B/log(2)*(nr*(Pha1_r-x1))+...
B/log(2)*(nt*(Pha1_t-x2))
subject to
x1>=0;
x2>=0;
real(trace(W_r+W_t))<=P1_max(ll);
real(trace(F_f))<=Pn;
for l1=1:L1
Pha2_r(:,l1)<=x1;
A_br(:,:,l1) == hermitian_semidefinite(M+1);
A_jr(:,:,l1) == hermitian_semidefinite(M+1);
end
for l2=1:L2
Pha2_t(:,l2)<=x2;
A_bt(:,:,l2) == hermitian_semidefinite(M+1);
A_jt(:,:,l2) == hermitian_semidefinite(M+1);
end
cvx_end