Error using .* (line 262)
Disciplined convex programming error:
Invalid quadratic form(s): not a square.
Error using * (line 36 )
z = feval( oper, x, y );
Error using :
v_3=x_dataCU(k,1)*(v_1+v_2+C_tot_blk_partial+C_DC_tot_blk+eye(leng*N)+(QC_tot_blk./a_m^2))\Hhatallj_active(:,k);
This is part of my code
iter=0;
epsilon=1;
for k=1:K
servingAPs = find(MatA(:,k) == 1);
leng=length(servingAPs);
end
while(epsilon>=0.005)
iter=iter+1;
cvx_begin
cvx_solver mosek
expression sum_C_tot_blk(N*leng, N*leng);
expression sum_C_DC_tot_blk(N*leng, N*leng);
expression QC_tot_blk(N*leng,N*leng);
variable x_dataCU(K,1);
variable x_dataD(L,1);
variable V_SINRCU(K,1);
variable X_SINRD(L,1);
% maximize (prod(V_SINRCU)*prod(X_SINRD));
maximize (sum_log(V_SINRCU) + sum_log(X_SINRD))
subject to
for l = 1:M
temp_sum = zeros(N, N);% 用于保存 CVX 变量的临时和
for k=1:K
temp_sum = temp_sum + x_dataCU(k,1)*R_CU(:,:,l,k);
end
for k1=1:L
temp_sum = temp_sum + x_dataD(k1,1)*R_DC(:,:,l,k1);
end
QC_tot(:,:,l) = a_m*(1-a_m)*diag(diag((temp_sum + eyeN)));
end
for n=1:numb0fRealization
for k=1:K
servingAPs = find(MatA(:,k) == 1);
leng=length(servingAPs);
servedUEs = sum(MatA(servingAPs,:),1)>=1;
Hhatallj_active = zeros(N*leng,K);
C_tot_blk_partial = zeros(N*leng,N*leng);
Hhat_DC_active = zeros(N*leng,L);
C_DC_tot_blk = zeros(N*leng,N*leng);
for l=1:leng
Hhatallj_active((l-1)*N+1:l*N,:) = reshape(Hhat_CU((servingAPs(l)-1)*N+1:servingAPs(l)*N,n,:),[N K]);
Hhat_DC_active((l-1)*N+1:l*N,:) = reshape(Hhat_DC((servingAPs(l)-1)*N+1:servingAPs(l)*N,n,:),[N L]);
sum_C_tot_blk((l-1)*N+1:l*N,(l-1)*N+1:l*N) = sum(x_dataCU'.*reshape(C_CU(:,:,servingAPs(l),:),1,K));
C_tot_blk_partial((l-1)*N+1:l*N,(l-1)*N+1:l*N) = sum(C_CU(:,:,servingAPs(l),servedUEs),4);
C_DC_tot_blk((l-1)*N+1:l*N,(l-1)*N+1:l*N) = sum(C_DC(:,:,servingAPs(l),:),4);
sum_C_DC_tot_blk((l-1)*N+1:l*N,(l-1)*N+1:l*N) = sum(x_dataD2D'.*reshape(C_DC(:,:,servingAPs(l),:),1,L));
QC_tot_blk((l-1)*N+1:l*N,(l-1)*N+1:l*N) =sum(QC_tot(:,:,1:servingAPs(l)),3);
end
%检测矩阵
v_1=0;
for same_us=find(servedUEs==1)
v_1=v_1+x_dataCU(same_us,1)*(Hhatallj_active(:,same_us)*Hhatallj_active(:,same_us)');
end
v_2=0;
for l=1:L
v_2=v_2+x_dataD(l,1)*(Hhat_DC_active(:,l)*Hhat_DC_active(:,l)');
end
v_3=x_dataCU(k,1)*(v_1+v_2+C_tot_blk_partial+C_DC_tot_blk+eye(leng*N)+(QC_tot_blk./a_m^2))\Hhatallj_active(:,k);
numerator_A = x_dataCU(k,1)*abs(v_3'*Hhatallj_active(:,k))^2;
s1=0;
for k_1=1:K
s1=s1+x_dataCU(k_1,1)*norm((v_3'*Hhatallj_active(:,k_1)))^2;
end
s2=0;
for l_1=1:L
s2=s2+x_dataD(l_1,1)*norm((v_3'*Hhat_DC_active(:,l_1)))^2;
end
op=1;%用于设置断点
denominator_B =s1+real(v_3'*(sum_C_tot_blk+eye(leng*N)+sum_C_DC_tot_blk+(QC_tot_blk/a_m^2))*v_3)+s2-numerator_A;
prod_inv([denominator_B V_SINRCU(k,1)])-numerator_A<=0;%
V_SINRCU(k,1)>=0;
end
for k=1:K
x_dataCU(k,1)>=0;
x_dataCU(k,1)<=p_sc;
end
for l=1:L
x_dataD(l,1)>=0;
x_dataD(l,1)<=Pt;
end
end
cvx_end