How to write the following in CVX?

(dazzy .L) #1

min ||A(x)-B|| over x and A is a linear mapping

(Mark L. Stone) #2

A(x) means A*x for some input matrix A?

If so,

cvx_begin
variable x(size(A,2))
minimize(norm(A*x-B))
% insert any constraints
cvx_end

Have you read the CVX Users’ Guide http://cvxr.com/cvx/doc/? This is about as straightforward a problem as there is to enter into CVX.

(dazzy .L) #3

the mapping is a vector x to matrix mapping , that is confusing me , we can’t make it as a multiplication as u wrote , ofcourse i read the guide and had no clue how to solve it

(Mark L. Stone) #4

What are the dimensions of x and B? Presumably, A(x) has the same dimensions as B.

If x were a numerically-populated MATLAB (not CVX) variable, what MATLAB code would you use to evaluate A(x)? If you can not answer that, I doubt anyone here can help you. So far, all we know is that A(x) is a mysterious linear map from a vector to a matrix.

Is it something like A being m by n matrix, x being n by 1 vector, B being m by p matrix, and A(x) = repmat(A*x,1,p) ? If so, use minimize(norm(repmat(A*x,1,p)-B))

Whatever it is, if it is a linear map,. and you know how to evaluate it in MATLAB,. you hopefully will be able to code it the same way in CVX when x id declared a CVX variable, as opposed to being a numerically-populated MATLAB variable,.

Mixed norm minimization
(dazzy .L) #5

sir i posted another question its an extension to this with more details , take a look at it , thanks in advance