function flg = Expr3_can_recovery(Phi_far, N, M, n, s, eps) % select random n cols col_choose = randperm(N, n); Phi = Phi_far(col_choose, :); % generate sparse signal sparse_signal = zeros(M, N); block = randperm(N, s); sparse_signal(:, block) = exp(1i * 2 * pi * rand(M, s)); % generate y y = Phi * sparse_signal(:); cvx_begin quiet variable x(M, N) complex norm21 = 0; for i = 1:N norm21 = norm21 + norm(x(:, i)); end minimize(norm21) subject to Phi * x(:) == y cvx_end p = norm(x(:) - sparse_signal(:), 2); if p < eps flg = 1; else flg = 0; end end