I now see that you are trying to include two constraints on one line, separated by a comma.

Your first attempt, `norm(p0,1)=norm(X,2)^2/10`

, is an illegal expression assignment.attempt.

Your second attempt, `norm(p0,1) == norm(X,2)^2/10`

is a nonlinear equality constraint, which is non-convex and violates CVX;s DCP rules, hence the error message you received.

The last version you show, `norm(p,1) <= norm(X,2)^2/10`

is convex and acceptable to CVX. it is different than the non-convex equality constraint.

The sum of p can be constrained to be a constant with the constraint `sum(p) == your_constant`

. DO you also want a constraint on the *one) norm of p? If so `norm(p,1) <= some_constant`

is convex and allowed; while norm(p,1) == some_constant is non-convex and is not allowed in CVX.

If you really want the non-convex norm equality constraint, either use a tool which allows non-convex constraints, or try the approach provided in @stephen_boyd’s answer at How to handle nonlinear equality constraints?