function [ echo_rd_mtx, target_list_RDA, sigma_n_rd ] =... echo_processing_MF( echo_mtx, PRF, fs, fc, B, D, d, sigma_n, P_fa ) % This function processes echo data using matching filter 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) % 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 % % 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_MF(echo_sFFT_mtx, A, sigma_n); fprintf(' Range_processing done.\n'); [echo_rd_mtx, stat_RD, sigma_n_rd] = doppler_process_MF(echo_r_mtx, sigma_n_o); 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