Add Example
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user