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

57 lines
2.1 KiB
Matlab

function [ echo_rd_mtx, target_list_RDA, sigma_n_rd ] = ...
echo_processing_CS( echo_mtx, PRF, fs, fc, B, D, d, sigma_n, P_fa, lambda_r, lambda_d )
% This function processes echo data using compressed sensing method.
%
% Usage:
% [echo_rd_mtx, target_list_RDA, sigma_n_rd] = echo_processing_MF(echo_mtx, PRF, fs, fc, B, D, d, sigma_n, P_fa, lambda_r, lambda_d)
%
% Inputs:
% echo_mtx: Matrix containing the echo data
% PRF: Pulse Repetition Frequency
% fs: Sampling frequency
% fc: Carrier frequency
% B: Bandwidth
% D: Duty ratio
% d: Antenna spacing
% sigma_n: Input noise level of the echo data
% P_fa: False alarm probability threshold
% lambda_r: LASSO weight for range processing
% lambda_d: LASSO weight for doppler processing
%
% Outputs:
% echo_rd_mtx: Echo matrix after range-Doppler processing
% target_list_RDA: List of detected targets
% sigma_n_rd: Estimated noise level after range-Doppler processing
% parameters
c = 3e8;
lambda = c / fc;
[num_antenna, N, num_pluse] = size(echo_mtx);
% data processing
[distance_v, speed_v] = get_range_speed_val(PRF, fs, fc, num_pluse);
[echo_sFFT_mtx, angle_v] = spatial_FFT(echo_mtx, d, lambda);
fprintf(' Spatial_FFT done.\n');
[A, signal_t] = generate_chirp_mtx(PRF, B, fs, D);
fprintf(' Generate_chirp_mtx done.\n');
[echo_r_mtx, sigma_n_o] = range_process_CS(echo_sFFT_mtx, A, sigma_n, lambda_r);
fprintf(' Range_processing done.\n');
[echo_rd_mtx, stat_RD, sigma_n_rd] = doppler_process_CS(echo_r_mtx, sigma_n_o, lambda_d);
fprintf(' Doppler_processing done.\n');
[target_list_RDA_temp, target_map] = rda_detection(stat_RD, P_fa);
fprintf(' Target_detection done.\n');
[target_list_RDA] = angle_estimation(target_list_RDA_temp, echo_mtx, A, d, lambda);
fprintf(' Angle_estimation done.\n');
target_list_RDA(:, 1) = distance_v(target_list_RDA(:, 1));
target_list_RDA(:, 2) = speed_v(target_list_RDA(:, 2));
end