Hi. This is simple to do using a Big M approach for disjunctive constraints (I’ll make my big M, “U”, rather than M to avoid confusion with your m). It requires use of CVX"s MIDCP capability.
We need to have an upper bound on x, I will call it U. Make U the smallest upper bound that you can. So your desired constraints are:
x == 0 or m <=x <= U.
Declare binary variables y1 and y2. Now add constraints
x >= 0
y1 + y2 <= 1
x <= Uy1
x >= m(1-y2)
Why does this work? y1 + y2 <= 1 implies y1 and y2 can not both be 1.
If y1 =y 2 = 0, then x <= 0 and x >= m, which is impossible (infeasible).
Therefore, either y1 = 0 and y2 =1, or y1 = 1 and y2 = 0.
The case y1 = 0 and y2 = 1 implies x <= 0 and x >= 0, which therefore implies x == 0.
The case y1 = 1, y2 = 0 implies x <= U and x >= m, i.e. m <= x <= U.
Therefore, this should do exactly what you want.