In CVX, I declared ‘beta’ with two arguments (i.e., variable beta(nUsers,nUsers))
to be an optimization without recalling that it is a Matlab built-in (in fact well-known)
function. Part of my Matlab code is given below
cvx_begin sdp
variable beta(nUsers,nUsers)
...
subject to
...
for jUser = 1:nUsers
if(jUser ~= iUser)
F = 0;
for iEllipsoid=1:nEllipsoids
F = F +mylambda(iEllipsoid,jUser,iUser)*...
Ellipsoids(:,:,iUser,usercellindex(jUser),iEllipsoid);
end
% an LMI
[beta(jUser,iUser)-sum(mylambda(:,jUser,iUser)) zeros(1,nTx)
-channel(:,:,iUser,usercellindex(jUser))*beamformer(:,jUser);
zeros(nTx,1) F beamformer(:,jUser);
-beamformer(:,jUser)'*channel(:,:,iUser,usercellindex(jUser))'
beamformer(:,jUser)' 1] >= 0;
end
end
....
noisevariance + sum(beta(otherusers,iUser)) <= mymu(iUser);
cvx_end
When I go into the cvx environment, it appears that CVX already overwrites the function
beta and I got the results
The problem is that I just change ‘beta’ to ‘mybeta’ and actually obtain different
(better) results. Can you please tell me what the potential problem is? I guess it could be
a matter of overwriting in Matlab.