function [cfarout, threshold] = Run()
%% 1. 基础参数设置
Fs = 10e6; % 采样率 10 MHz
T_total = 1000e-6; % 总时长 1000 μs
t = (0:1/Fs:T_total-1/Fs).'; % 时间序列

% 目标参数:[时间(μs), 幅度]
targets = [
50, 0.6;
100, 0.7;
200, 0.8;
300, 0.85;
400, 1.0; % 主峰
450, 0.75;
600, 0.7;
700, 0.9;
750, 0.95;
900, 0.65
];
%% 2. 生成带杂波噪声的回波信号
sig_target = zeros(size(t));
pulse_width = 1e-6; % 目标回波脉冲宽度 1 μs
for i = 1:size(targets,1)
t0 = targets(i,1)*1e-6; % 目标时间点(转秒)
amp = targets(i,2);
sig_target = sig_target + amp * exp( -((t - t0)/pulse_width).^2 );
end
% 加入杂波和噪声
rng(1); % 固定随机种子,保证每次仿真结果一致
clutter = 0.3 * filter(ones(1,50)/50, 1, randn(size(t)));
noise = 0.1 * randn(size(t));
carout = sig_target + clutter + noise;
%% 3. CA-CFAR 自适应阈值计算
N = 16; % 参考单元数(前后各8个)
Guard = 4; % 保护单元数(前后各2个)
Pfa = 1e-3; % 虚警概率
alpha = N*(Pfa^(-1/N)-1); % CA-CFAR 缩放系数
threshold = zeros(size(carout));
len = length(carout);
for i = 1:len
% 取参考窗范围
idx_start = max(1, i - N/2 - Guard);
idx_end = min(len, i + N/2 + Guard);
% 排除保护单元
ref_idx = [idx_start:i-Guard-1, i+Guard+1:idx_end];
ref_idx = ref_idx(ref_idx >= 1 & ref_idx <= len);
if ~isempty(ref_idx)
noise_power = mean(abs(carout(ref_idx)).^2);
threshold(i) = alpha * noise_power;
else
threshold(i) = 0.5;
end
end
%% 4. 生成检测结果 cfarout
cfarout = double(abs(carout).^2 > threshold);
end
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删