Files
FAR_CS/0 - example/wzk - main_process/main_cs_part.m
T
2024-11-11 16:32:53 +08:00

85 lines
1.9 KiB
Matlab

clc
clear
close all
%% load echo data
filename = 'Raw_Echo_60dB';
load(['./data/', filename, '.mat']);
%% parameters
% ladar
PRF = 5000;
B = 5e6;
D = 0.1;
Tp = 2e-5;
fs = 5e6;
fc = 1.25e9;
% antenna
num_antenna = 18;
d = 0.12;
% echo
num_pulse = 64;
sigma_n = 0.1;
% detect
P_fa = 1e-5;
% algorithm
gamma_r = 0.5;
gamma_d = 0.5;
lambda_r = 0.005;
lambda_d = 0.15;
%% data processing
fprintf(['File: ', filename, '\n']);
[distance_v, speed_v] = get_range_speed_val(PRF, fs, fc, num_pulse, gamma_r, gamma_d);
[A, signal_t] = generate_chirp_mtx(PRF, B, fs, D);
fprintf(' 1: generate_chirp_mtx done.\n');
% first antenna
Raw_Echo_antenna1 = Raw_Echo(1, :, :);
[echo_r_mtx_cs_antenna1, sigma_n_o_cs_antenna1] = range_process_CS(Raw_Echo_antenna1, A, sigma_n, lambda_r);
fprintf(' 2: first antenna range_process_CS done.\n');
% first pulse
Raw_Echo_pulse1 = Raw_Echo(:, :, 1);
[echo_r_mtx_cs_pulse1, sigma_n_o_cs_pulse1] = range_process_CS(Raw_Echo_pulse1, A, sigma_n, lambda_r);
fprintf(' 3: first pulse range_process_CS done.\n');
[echo_rd_mtx_cs, stat_RD_cs] = doppler_process_CS(echo_r_mtx_cs_antenna1, sigma_n_o_cs_antenna1, lambda_d, gamma_d);
fprintf(' 4: doppler_process_CS done.\n');
[target_list_RD_cs, target_map_cs] = rd_detection(stat_RD_cs, P_fa);
fprintf(' 5: rd_detection done.\n');
[target_list_RDA, RA_map] = angle_est(echo_r_mtx_cs_pulse1, target_list_RD_cs, d, fc);
fprintf(' 6: angle_est done.\n');
%% show result
element = 1;
list_r_idx = find(target_list_RDA(:, 1) == element);
target_list_RDA(:, 2) = distance_v(target_list_RDA(:, 2));
target_list_RDA(:, 3) = speed_v(target_list_RDA(:, 3));
figure(1)
scatter3(target_list_RDA(list_r_idx,2), target_list_RDA(list_r_idx,3),...
target_list_RDA(list_r_idx,4), 'filled', 'o')
% xlim([17000, 19000])
% ylim([80, 160])
% zlim([-90, 90])
%% save
echo_rd_mtx = echo_rd_mtx_cs;
save(['./output/', filename, '_cs_part.mat'],...
'target_list_RDA', 'echo_rd_mtx', 'RA_map', 'P_fa');