hello,

is it correct to do like this ?

if y is sparse

min norm(y-D*s)

subject to norm(s,1)< sparsity order

I worry that cvx couldnot find sparse vector with sparsity order, so I wrote this, but I got error.

min norm(y-D*s)

subject to norm(s,1)== sparsity order

thanks

Do you want to do something with the sparsity order of the optimization variable s? That would be non-convex.

If you are referring to sparsity order of a sparse input vector y, then it should be straightforward to implement in CVX. For example,

```
y=sparse([0 1 0 2 0 3 0 4 0 5]');
D=rand(10,10);
cvx_begin
variable s(10,1)
minimize(norm(y-D*s))
norm(s,1) <= 4
cvx_end
```

Of course, using an equality constraint on norm(s,1) is non-convex, and is not allowed by CVX.

1 Like

I do play with your code and I found this

**initial point of s does not have any effect on the optimization output.**

clc

clear all

y=sparse([0 1 0 2 0 3 0 4 0 5]’);

D=rand(10,10);

s=ones(10,1);

cvx_begin

variable s(10,1)

minimize(norm(y-D*s))

norm(s,1) <= 4

cvx_end

figure; plot(s)

Any value of s prior to its declaration in CVX is ignored by CVX. There is no way of specifying an initial value of a CVX variable to CVX. That is the designed behavior of CVX.