both diag2 and temp2 are cvx complex affine expressions(6x6 matrics)
the codes are shown below
for b = 1:Num_Block
cvx_begin sdp quiet
variable w(Num_tx,1) complex
variable tu nonnegative
variable te nonnegative
variable lamda nonnegative
variable miu nonnegative
diag_theta_former_b = diag(exp(1i.*theta_former(:,b)));
% M1
expression temp1(Num_ele+3,Num_ele+3)
diag1 = blkdiag(te-lamda,1-lamda,lamda*eye(Num_ele+1));
temp1(:,1) = [0;((Channel_gr_bar(:,b)'*diag_theta_former_b*Channel_G(:,:,b)+Channel_gd(:,b)')*w)';zeros(Num_ele+1,1)];
temp1(:,2) = [(Channel_gr_bar(:,b)'*diag_theta_former_b*Channel_G(:,:,b)+Channel_gd(:,b)')*w;0;ke(1,b)*(diag_theta_former_b*Channel_G(:,:,b)*w);0];
m1 = diag1 + temp1 + temp1';
% M2
F1 = diag_theta_former_b*Channel_G(:,:,b)*w*w_former(:,b)'*Channel_G(:,:,b)'*diag_theta_former_b' ...
+ diag_theta_former_b*Channel_G(:,:,b)*w_former(:,b)*w'*Channel_G(:,:,b)'*diag_theta_former_b' ...
- diag_theta_former_b*Channel_G(:,:,b)*w_former(:,b)*w_former(:,b)'*Channel_G(:,:,b)'*diag_theta_former_b';
f2 = diag_theta_former_b*Channel_G(:,:,b)*w*w_former(:,b)'*Channel_hd(:,b) ...
+ diag_theta_former_b*Channel_G(:,:,b)*w_former(:,b)*w'*Channel_hd(:,b) ...
- diag_theta_former_b*Channel_G(:,:,b)*w_former(:,b)*w_former(:,b)'*Channel_hd(:,b);
f3 = Channel_hd(:,b)'*(w*w_former(:,b)'+w_former(:,b)*w'-w_former(:,b)*w_former(:,b)')*Channel_hd(:,b);
f4 = Channel_hr_bar(:,b)'*F1*Channel_hr_bar(:,b)+Channel_hr_bar(:,b)'*f2+f2'*Channel_hr_bar(:,b)+f3;
expression temp2(Num_ele+1,Num_ele+1)
diag2 = blkdiag(eye(Num_ele)+F1,f4-tu-miu*ku(1,b)^2);
temp2(:,1:Num_ele) = [zeros(Num_ele,Num_ele);Channel_hr_bar(:,b)'*F1+f2'];
m2 = diag2 + temp2 + temp2'; %%%%% where the problem arises
maximize(tu/Noise_Var_u-te/Noise_Var_e)
subject to
norm( w ) <= sqrt(P);
m1 >= 0;
m2 >= 0;
cvx_end
w_opt(:,b) = w;
end