Sparse recovery via convex optimization