Hi, I’m trying to follow this paper

De Tommasi, L. and Gustavsen, B. and Dhaene, T., “Robust transfer function identification via an enhanced magnitude vector fitting algorithm”, Control Theory Applications, IET (2010), 1169 -1178.

In section 5 of that article, it mentions using CVX for creating DCP to get an optimized minimization, with constraints. Basically we have an overdetermined problem of the form A*X=B and we want to solve for X such that A*X will always yield non-negative values. (A is a matrix with as many columns as X has rows. A and B have the same number of rows, which can be very large depending on the number of frequency points being fitted)

I’ve tried to implement the following code:

```
Bz = zeros(size(B));
cvx_begin()
variable X(Norder+offs) complex;
minimize( norm(A*X-B,2) );
subject to
A*(X) >= Bz;
if (opts.asympflag>1)
X(Norder+offs) >= 0;
end
cvx_end
```

Here is the error I get:

```
Error using cvxprob/newcnstr (line 181)
Disciplined convex programming error:
Invalid constraint: {complex affine} >= {constant}
Error in cvx/ge (line 21)
b = newcnstr( evalin( 'caller', 'cvx_problem', '[]' ), x, y, '>=' );
Error in wmagvf (line 457)
A*X >= Bz;
```

I’m a bit confused, since according to the paper:

Combining some DCP rules, it can be

found that a minimisation problem

consisting of a convex objective

function and ‘greater than’ inequality

constraints, where the left side is

concave and the right side is convex,

is a DCP problem. Problem (15) under

constraints (22) belongs to such

category of DCPs. In fact, the

objective function to be minimised

when solving (15) is convex, because

attainable by composition of an affine

inner component and a convex outer

component, that is the norm-2 function

(affine composition rule). Moreover,

left-hand sides of (22) are affine

(and therefore concave) whereas

right-hand sides are constant (and

therefore convex).

Thanks in advance for any help with this problem!

ng