Why the variable dimensions don't match

I’ve run an optimization using the norm function in the constraints. I set the dimension of my unknown variables to be 1632, and it returns a vector of 1632 in the end. But in the command window, it shows “Calling SDPT3 4.0: 1650 variables, 119 equality constraints”. I’ve tried different solvers and they all give unmatched dimensions, though with different numbers. And when the norm function is removed, the problem is gone. Why is that?

My code looks like:
cvx_clear
cvx_begin
variable theta(1632)
dual variables lambdaEq lambdaEq2 lambdaIneq

maximize( A * theta )
subject to

lambdaEq: norm(B * theta - p)<=0.001;
lambdaEq2: one * theta == ones(K*dim_x,1);
lambdaIneq: theta >= zer;

cvx_end

Calling SDPT3 4.0: 1650 variables, 119 equality constraints

num. of constraints = 119
dim. of socp var = 17, num. of socp blk = 1
dim. of linear var = 1633

Thanks for your help!

Modeling various cvx functions in the underlying solvers can require adding additional variables and/or constraints. Actually, that’s kind of the point of cvx: it saves you the effort of doing that reformulation yourself!