Mixed l1/lq norm


(Md Afaque Azam) #1
A = randi([1 10],[10 5]);
y = randi([1 10],[5 5]);
b = A*y;
cvx_begin
variable z(5,5)
minimize sum(norms(z,2.5,2))

error:
Error using reshape
To RESHAPE the number of elements must not change.

Error in cvx/cat (line 102)
yb = reshape( yb, nz, psz );

Error in cvx/norms (line 89)
{ cat( 3, z, y( ones(nx,1), : ) ), cvx_accept_convex(x) } …

Error in minimize (line 14)
x = evalin( ‘caller’, sprintf( '%s ', varargin{:} ) );

Please suggest the error and the way to correct it.


(Mark L. Stone) #2

I believe that when called with a matrix argument, norms only allows the 2nd argument to be 1, 2, or inf, although that doesn’t seem to be documented. Hence the rather cryptic error message,

However, I believe you can accomplish what you want with this brute force approach.

Obj = 0;
for i = 1:5
  Obj = Obj + norm(z(i,:),2.5);
end
minimize(Obj)

Obviously this program as written doesn’t make sense as the final program, because optimal z will always be all zeros. I presume you will want to bring b into the objective. I will let you figure out in what manner and with appropriate dimensions for everything.


(Md Afaque Azam) #3

Thankyou Mark. I was in a trouble there.