Why i change the real to complex, the cvx doesn't work


cvx_begin
cvx_solver SeDuMi
variable y(MM+1,1)
minimize( bb.'y)
subject to
% passband
for pi=1:count2-1
vp = Vp(:,:,pi);
temp = norm( (vp
y-pasbd(:,pi)),2);
temp <= bb.'y;
end
% stopband
for si=1:count1-1
vs = Vs(:,:,si);
norm((vs
y),2) <= delta;
end
norm((Zero
y),2) <= xi;
cvx_end

if i define the variable y(M*M+1,1) complex, this code doesn’t work.

You can’t minimize a complex objective like bb.'y. The error might have told you that.

I have also tried to use abs() or norm() to solve it, including the next <= bb.’*y
obviously,i failed.

Did you find this formulation (image) in a book or paper? If so, it is your responsibility to understand it. Does the paper say that Y should be complex? Is B complex? Should you be taking the real part, i.e., minimize(real(B'*Y))? Alternatively, minimize(abs(B'*Y)) would be accepted by CVX, but that is not even equivalent to B'*Y if all variables and input data were real. One way or another, the optimization problem has to have an objective function which evaluates to real.

1 Like

OK,I see it. Thank you very much!