diff --git a/Random PRI/Main.m b/Random PRI/Main.m new file mode 100644 index 0000000..7280702 --- /dev/null +++ b/Random PRI/Main.m @@ -0,0 +1,41 @@ +clc; clear; close all; + +parameters; + +global trail_times; + +[s_T_narrow, A] = narrow_signal_model(t, 1); + +A = A / 10; + +AH = A'; + +H0 = []; +for T = 1: trail_times + x = zeros(10, 1); + % x(4) = 0.8; + y = A * x; + y_noise = awgn(y, 15); + + x_hat = AH * y_noise; + + H0 = [H0 x_hat']; +end + +H1 = []; +for T = 1: trail_times + x = zeros(10, 1); + x(4) = 0.8; + y = A * x; + y_noise = awgn(y, 15); + + x_hat = AH * y_noise; + + H1 = [H1 x_hat(4)]; +end + +% figure; histfit(real(H0)); +% figure; histfit(real(H1)); + +figure; +plot() diff --git a/Random PRI/narrow_signal_model.m b/Random PRI/narrow_signal_model.m new file mode 100644 index 0000000..4169139 --- /dev/null +++ b/Random PRI/narrow_signal_model.m @@ -0,0 +1,25 @@ +function [s_T_narrow, A_narrow] = narrow_signal_model(t, betas_narrow) + global f_c N_narrow N FIGURE N_wide numP f_s K_chirp T_r; + + tt = 0: 1/f_s: numP * T_r - 1/f_s; + + % 使用等效散射系数生成窄带情况信号模型 + s_T_narrow = zeros(1, N * numP); + for j = 1: numP + idx = ((j-1) * N + (1:N_narrow)); + tp = idx / f_s; + s_T_narrow(1, idx) = exp(1j * 2 * pi * (f_c * tp + 0.5 * K_chirp * tp .^ 2)); + end + + % s_T_narrow = exp(1j .* 2 .* pi .* f_c .* t); + s_R_narrows = zeros(N_narrow, N * numP); + for i = 1: N_narrow + p = i * (N_wide / N_narrow); + s_R_narrows(i, :) = betas_narrow * [zeros(1, p), s_T_narrow(1: end-p)]; + end + + A_narrow = s_R_narrows'; + if FIGURE + subplot(2, 1, 1); plot(tt, real(s_T_narrow)); + subplot(2, 1, 2); plot(tt, real(s_R_narrows(1, :))); + end \ No newline at end of file diff --git a/Random PRI/parameters.m b/Random PRI/parameters.m new file mode 100644 index 0000000..0f1d817 --- /dev/null +++ b/Random PRI/parameters.m @@ -0,0 +1,59 @@ +global bandwidth T_p f_s T_s K_chirp f_c PRF T_r numP t tP c N M R_0... + delta_R_wide delta_R_narrow N_wide N_narrow ranges_wide... + ranges_narrow betas_wide FIGURE K_wide K_narrow trail_times... + method N_high TEST lambda tau iter_max noise_sigma FAR_N FAR_M noise_sigma_2 DEBUG_LEVEL... +; + +f_c = 10e9; % X wave +bandwidth = 100e6; +T_p = 1e-5; +f_s = 2 * bandwidth; +T_s = 1 / f_s; +K_chirp = bandwidth / T_p; +T_r = T_p * 10; +PRF = 1 / T_r; + +numP = 10; + +t = 0: 1 / f_s: T_r - 1 / f_s; +tP = 0: 1 / f_s: T_r * numP - 1 / f_s; + +c = 3e8; % 光速 + +N = length(t); +N_high = T_p * f_s; +M = round(T_p * bandwidth); +R_0 = 0; +delta_R_wide = c ./ 2 ./ bandwidth; +delta_R_narrow = T_p .* c ./ 2; +N_wide = 100; +N_narrow = round(N_wide / M); + +% alert(N > N_narrow); + +ranges_wide = R_0 + (0:N_wide) * delta_R_wide; % [1000, 4000] +ranges_narrow = R_0 + (0:N_narrow) * delta_R_narrow; % [1000, 4000] +betas_wide = linspace(1, 0.1, N_wide) + 1j * linspace(0.1, 1, N_wide); + +K_wide = round(N_wide / 10); +K_narrow = round(K_wide / 10); + +FIGURE = false; +trail_times = 5000; +% method = "debiased_LASSO"; +% method = "LASSO"; +% method = "BP"; +method = "cVAMPro"; +TEST = false; + +lambda = 0.01; +tau = 1e-6; +iter_max = 1000; + +noise_sigma = 0.1; +noise_sigma_2 = 0.1; + +FAR_N = 480; +FAR_M = 10; + +DEBUG_LEVEL = 1;