Thank you for your reply. As sqrt or pow_p with p=0.5 are concave and nondecresing in their argument, they accepts only concave arguments. Is there a way I can take the sqrt of sum_largest(square_abs(w), k)
still abiding to the DCP rules?
Another question I have is: in order to compute the k-support norm I need to compute r
via for loops and if statements involving my vector w. How can such features be implemented in CVX?
A Matlab code example to compute such norm can be:
function norm_w = ksupp_norm(w, k)
d = length(w);
[beta, ind] = sort(abs(w), 'descend');
temp = sum(beta(k:d));
found = false;
for r=0:k-2
if ( (temp >= (r+1) * beta(k-r)) && (temp < (r+1) * beta(k-r-1)) )
found = true;
break;
else
temp = temp + beta(k-r-1);
end
end
if (~found)
r=k-1;
end
norm_w = sqrt( beta(1:k-r-1)'* beta(1:k-r-1) + temp^2/(r+1) );
end