I have a received signal equation in the form:
y1 = (alpha' * G1 *f2 ) X2 + (alpha'* G1* Z + z1 )
y2 = (alpha' * G2 *f1 ) X1 + (alpha'* G2* Z + z1 )
where alpha,f1, f2, z are 3 element complex vectors
and G1, G2 are 3X3 complex diagonal matrices
and z is a 1X1 complex number
X1 & X2 are the signals ,
(alpha’* G1* Z + z1 ) & (alpha’* G2* Z + z1 ) are the noise terms in both received signals.
I am trying to express the signal-to-noise ratios as Objective function
maximize min(snr1,snr2)
where alpha is the parameter to be optimized, snr1 and snr2 are expressed as:
snr1 = |(alphas' * G1 *f2 )|^2 * P2 / ( |alpha'* G1* Z |^2 + sigma^2)
snr2 = |(alphas' * G2 *f1 )|^2 * P1 / ( |alpha'* G2* Z |^2 + sigma^2)
where P1, P2, sigma^2 are scalar positive values
First: is it possible to use CVX for such objective function?
i think it is similar to General linear fraction programing mentioned in convex optimization Boyd Book
Second: i have tried to express the numerator and demonator in CVX form but i have errors:
cvx_begin
variables alphas(3) ;
X1_a = square_pos(abs(alphas' * G1 * f2 ))
X1_b = (square_pos(abs(alphas'* g1))+1)* SigmaSq
% no problems till here
% i am trying to get the inverse of the demonator value and multiply it with the numerator
X1 =X1_a * inv_pos(X1_b)
%
%
cvx_end
I got the following error:
Error using cvx/pow_cvx (line 144)
Disciplined convex programming error:
Illegal operation: pow_p( {convex}, {-1} )
Error in cvx/inv_pos (line 5)
y = pow_cvx( x, -1, ‘pow_p’ );
Error in Max_Min_optimize_Alphas_02 (line 55)
X1 = X1_a *inv_pos(X1_b)