How can i solve this peoblem

% function [wu,wm,beta1]=Passive_Get_W(para,theta,Channel_BI,Channel_IuU,Channel_ImU,Channel_uUmU)
%{
Function: Get the beamformer W and the splitting factor beta
Author:Lidong Liu
Data:2024/3/4
     2024/3/
%}
clear all;
clc;
para.K=2;
para.Nt=8;
para.M=20;
para.SINRu=10^(0.1*-10);
para.SINRm=10^(0.1*-10);
para.Power=1;

theta=exp(1i*rand(para.M,1)*2*pi);
Theta=diag(theta);

Noise_Power=10^(0.1*(-100));
 %% Get the effective channel
 [Channel_BI,Channel_IuU,Channel_ImU,Channel_uUmU,g]=Channel(para);

Channel_k=zeros(1,para.Nt);
Hk=zeros(para.Nt,para.Nt);
Channel_k=Channel_ImU'*Theta*Channel_BI;
Channel_k=Channel_k/sqrt(Noise_Power);
Hk=Channel_k*Channel_k';

Channel_K=zeros(1,para.Nt);
HK=zeros(para.Nt,para.Nt);
Channel_K=Channel_IuU'*Theta*Channel_BI;
Channel_K=Channel_K/sqrt(Noise_Power);
HK=Channel_K*Channel_K';

beta_0=0.5;
%% Get the initialization of the Wu,Wm
% [Wu_0,Wm_0]=Initialization_W_beta(para,HK,Hk,g,beta_0);
wu_0=sqrt(para.Power*0.5)*(randn(para.Nt,1)+1i*randn(para.Nt,1))/...
    norm((randn(para.Nt,1)+1i*randn(para.Nt,1))*(randn(para.Nt,1)+1i*randn(para.Nt,1))',2);
Wu_0=wu_0*wu_0';
wm_0=sqrt(para.Power*0.5)*(randn(para.Nt,1)+1i*randn(para.Nt,1))/...
    norm((randn(para.Nt,1)+1i*randn(para.Nt,1))*(randn(para.Nt,1)+1i*randn(para.Nt,1))',2);
Wm_0=wm_0*wm_0';

l0=trace(Hk*Wm_0)/(trace(Hk*Wu_0)+1);
e=sqrt(trace(Hk*Wu_0)/l0);
q0=sqrt(beta_0*g*trace(HK*(Wm_0+Wu_0)));
m0=sqrt((1-beta_0)*trace(HK*Wu_0));
Initial_Value=min(trace(Wu_0+Wm_0));
Record1=[Initial_Value];


Flag1=1;
Counter=0;
Max_Times=9;
while Flag1
    Counter=Counter+1;
    
    cvx_begin quiet
    cvx_solver SeDuMi%mosek%SeDuMi
    cvx_expert true
    variable beta1
    variable Wu(para.Nt,para.Nt) hermitian %complex
    variable Wm(para.Nt,para.Nt) hermitian %complex
    variable l
    variable q
    variable m
    variable p
    
    
    Wu==hermitian_semidefinite(para.Nt);
    Wm==hermitian_semidefinite(para.Nt);
    
    2*real(m0*m)-square(m0)>=para.SINRu;
    
    beta1>=0;
    beta1-1<=0;
    
    real(para.SINRm*trace(HK*Wu))+para.SINRm*inv_pos(1-beta1)-real(trace(HK*Wm))<=0;
    
    square(e*l)+square(trace(Hk*Wu)*inv_pos(e))<=2*real(trace(Hk*Wm))-2*l;
    
    [beta1*g,q;q,trace(HK*(Wu+Wm))]==hermitian_semidefinite(2);
    
    real(2*real(q0*q)-square(real(q0)))>=para.SINRm-l;
    
    [1-beta1,m;m,trace(HK*Wu)]==hermitian_semidefinite(2);
    
    minimize(real(trace(Wu+Wm)))
    cvx_end
    
    Flagg=1;
    if strcmp(cvx_status,'Solved') || strcmp(cvx_status,'Inaccurate/Solved')
        Updated_l=l;
        Updated_q=q;
        Updated_m=m;
        Updated_p=p;
        Updated_e=sqrt(trace(Hk*Wu)/l0);
        Updated_Wu=Wu;
        Updated_Wm=Wm;
        Updated_beta1=beta1;
        Updated_Value=cvx_optval;
    else
        Flagg=0;
        break;
    end
    
    Record1=[Record1,Updated_Value];
    if Counter>Max_Times
        Flag1=0;
        Final_p=Updated_p;
        Final_Wu=Updated_Wu;
        Final_Wm=Updated_Wm;
        Final_beta1=Updated_beta1;
    else
        l0=Updated_l;
        q0=Updated_q;
        m0=Updated_m;
        p0=Updated_p;
        e=Updated_e;
        Wu_0=Updated_Wu;
        Wm_0=Updated_Wm;
        beta_0=Updated_beta1;
        Initial_Value=Updated_Value;
    end      
    
end
if Flagg==1
    Obj=Record1(1,length(Record1));
    beta1=Final_beta1;
else
    beta1=zeros(1,para.M);
    Obj=0;
end
figure
plot(0:length(Record1)-1,Record1)   

Based on the value of `counter, it appears that this error occurred on the 1st iteration.

I don 't know whether this is due to installation problem, bug, non-nice data, or something else. Try another solver, such as SDPT3, and Mosek if available to you. if that doesn’t work, try a new MATLAB session, or reinstalling CVX in a new MATLAB session.

And do not use quiet until you can get through several iterations without error.

1 Like