48 lines
1.4 KiB
Matlab
48 lines
1.4 KiB
Matlab
function [ target_list_RDA, target_map ] = rda_detection(stat_RD, P_fa)
|
|
% Target detection, estimating distance, velocity, and angle intervals
|
|
%
|
|
% Usage:
|
|
% [target_list_RDA, target_map] = rda_detection(stat_RD, P_fa)
|
|
%
|
|
% Inputs:
|
|
% stat_RD: Range-Doppler statistics
|
|
% P_fa: Probability of false alarm
|
|
%
|
|
% Outputs:
|
|
% target_list_RDA: Target list include range, doppler and angle information
|
|
% target_map: Show targets in RD map
|
|
|
|
|
|
% parameters
|
|
[lenA, lenR, lenP] = size(stat_RD);
|
|
target_map = zeros(lenR, lenP);
|
|
|
|
% detection threshold
|
|
d_thd = chi2inv(1 - P_fa, 2) / 2;
|
|
|
|
% find target
|
|
target_list_RD = [];
|
|
for i = 1: lenA
|
|
RD_map = squeeze(stat_RD(i, :, :));
|
|
detect_map = zeros(size(RD_map));
|
|
detect_map(RD_map > d_thd) = 1;
|
|
% target_map(i, :, :) = detect_map;
|
|
[r, c] = find(detect_map);
|
|
temp_node = [r, c];
|
|
target_list_RD = [target_list_RD; temp_node];
|
|
end
|
|
target_list_RD_new = unique(target_list_RD, 'rows');
|
|
|
|
% estimate target angle interval
|
|
target_list_angle = [];
|
|
for i = 1: size(target_list_RD_new, 1)
|
|
tgt = target_list_RD_new(i, :);
|
|
stat_vct = stat_RD(:, tgt(1), tgt(2));
|
|
[v, idx] = max(stat_vct);
|
|
target_map(tgt(1), tgt(2)) = idx;
|
|
target_list_angle = [target_list_angle; idx];
|
|
end
|
|
target_list_RDA = [target_list_RD_new, target_list_angle];
|
|
|
|
end
|