function [ x_mf_norm, x_cs_norm ] = yAxn_recovery( A, SNR, Target_index, lambda ) % matrix parameters [M, N] = size(A); mul = A(:,1)'*A(:,1); % H0 sample L = round(Target_index + N * 0.1); R = round(N * 0.9); Lambda_C = L: R; % parameters sigma_n = 0.1; Target_amplitude = sqrt(10^(SNR/10) * sigma_n^2 / mul); %% CS setting % CS-parameters % lambda = 0.0005; alpha = 1/4; delta = 1e-8*alpha; % CS-normalization J1 = A*A'; lambda_J=eig(J1); A_norm = A / sqrt(lambda_J(end)); Hp = A_norm'*A_norm; [~, D] = eig(Hp); d = diag(D); sigma_n_norm = sigma_n / sqrt(lambda_J(end)); %% generate x x = zeros(N, 1); x(Target_index) = Target_amplitude; %% generate y noise = random('Normal', 0, sigma_n/sqrt(2), M, 1) + 1j * random('Normal', 0, sigma_n/sqrt(2), M, 1); y = A*x + noise; %% recover % MF x_mf = A' * y ./ mul; sigma_MF = sqrt(var(x_mf(Lambda_C))); x_mf_norm = x_mf ./ sigma_MF; % CS y_norm = y / sqrt(lambda_J(end)); x_FISTA = FISTA_v1(y_norm, A_norm, lambda, delta, Hp); [x_d_cal_f, hat_Q1_cal_f, sigma_d_cal_f] = cal_debiased_LASSO_v1(x_FISTA, A_norm, y_norm, lambda, sigma_n_norm, d); sigma_CS = sqrt(var(x_d_cal_f(Lambda_C))); x_cs_norm = x_d_cal_f ./ sigma_CS; end