At first,i wrote the code here,and thx for Mark_L_Stone to help me solve the problem,that question link is as below:
But now i modify the some of code,and the total code become
%declare
K=4;
N=4;
L=5;%distance between RX & TX
nois_var_hk_2pow=0.1*(L^(-2.05))
nois_var_ak_2pow=[10^-10 10^-10 10^-10 10^-10 ];
nois_var_dk_2pow=[10^-8 10^-8 10^-8 10^-8 ];
bar_r=[10 10 10 10];
P_T=10;
h_1=sqrt(nois_var_hk_2pow/2)*(randn(N,1)+1i*randn(N,1));
h_2=sqrt(nois_var_hk_2pow/2)*(randn(N,1)+1i*randn(N,1));
h_3=sqrt(nois_var_hk_2pow/2)*(randn(N,1)+1i*randn(N,1));
h_4=sqrt(nois_var_hk_2pow/2)*(randn(N,1)+1i*randn(N,1));
h_kk=cat(2,h_1 ,h_2 ,h_3, h_4)
for n=1:4
h_k{n}=h_kk(1:4 , n);
n=n+1;
end
%===========================================================
cvx_begin
variable f_kiii(N,1,K);
f_kii=cat(2, f_kiii)
for o=1:4
f_ki{o}=f_kii(1:4,o)
end
op2=0;
for k=1:K
op2=op2+f_ki{k}'*f_ki{k};
end
%==========================================
%objected function
minimize( op2 )
subject to
%==========================================
%c8
total = 0;
for k = 1:K
sub_denominator = 0;
for j = 1:K
if j ~= k
c=h_k{k}' * f_ki{j};
%sub_denominator = sub_denominator=pow_abs(c,2)
sub_denominator = sub_denominator + square_abs(h_k{k}' * f_ki{j});
end
end
total = total + sub_denominator;
end
numerator=square_abs(h_k{k}' * f_ki{j})
numerator >= max(bar_r(1) * max(real(total)+nois_var_ak_2pow(1) + nois_var_dk_2pow(1)),0)
cvx_end
The main difference are thay i modify FNNK(N,N,K)
to f_kiii(N,1,K)
and modify h_k{k}' * Fk{j} * h_k{k}
to square_abs(h_k{k}' * f_ki{j})
,i want to write |h_k{k}’ * f_ki{j}|^2,but the window show me that
Error using cvxprob/newcnstr (line 192)
Disciplined convex programming error:
Invalid constraint: {convex} >= {convex}Error in >= (line 21)
b = newcnstr( evalin( ‘caller’, ‘cvx_problem’, ‘’ ), x, y, ‘>=’ );Error in f_kI (line 54)
numerator >= max(bar_r(1) * max(real(total)+nois_var_ak_2pow(1) + nois_var_dk_2pow(1)),0)
Does anyone know how do i modify the code to let the code run?