基于CLEAN算法的杂波抑制Matlab仿真实现
%% 清杂波抑制仿真程序
% 参数设置
clear; clc; close all;
%% 1. 参数配置
c = 3e8; % 光速(m/s)
B = 1e6; % 带宽(Hz)
fc = 5e9; % 载频(GHz)
lambda = c/fc; % 波长(m)
SNR = 10; % 信噪比(dB)
CNR = 30; % 杂波信杂比(dB)
N_pulse = 128; % 脉冲数
PRF = 1000; % PRF(Hz)
Nr = 64; % 阵元数
theta_s = 30; % 目标角度(度)
theta_c = 0; % 杂波角度(度)
%% 2. 信号生成
% 生成目标信号
t = 0:1/PRF:1/PRF*(N_pulse-1);
tau = (theta_s - theta_c)*lambda/(2*Nr); % 波束形成延迟
s = exp(1j*2*pi*fc*t' + 1j*pi*B*t.^2/2); % 线性调频信号
% 生成杂波信号
clutter = exp(1j*2*pi*fc*t' + 1j*pi*B*t.^2/2) .* ...
exp(1j*2*pi*(theta_c*lambda/(2*Nr))*Nr/2*(1:Nr)');
% 添加噪声
noise = (randn(size(s)) + 1j*randn(size(s))) / sqrt(2);
rx = s + 10^(-SNR/20)*noise + 10^(-CNR/20)*clutter;
%% 3. CLEAN算法实现
function clean_signal = clean_algorithm(rx, num_iterations)
[Nr, N_pulse] = size(rx);
clean = zeros(size(rx));
residual = rx;
for iter = 1:num_iterations
% 峰值检测
[~, idx] = max(abs(residual));
max_pos = ind2sub(size(residual), idx);
# 构建模型信号
model = zeros(size(residual));
model(max_pos(1), max_pos(2)) = residual(max_pos(1), max_pos(2));
# 更新清洁信号
clean = clean + model;
# 更新残差
residual = residual - model;
end
end
%% 4. 信号处理
% 传统FFT处理
fft_rx = fft(rx, [], 2);
fft_clean = fft(clean_algorithm(rx, 10), [], 2);
% 距离-多普勒处理
fd = (-Nr/2:Nr/2-1)' * PRF / Nr;
range = (0:N_pulse-1) * c/(2*B);
% 清洁算法处理
clean_data = clean_algorithm(rx, 10);
%% 5. 结果可视化
figure;
subplot(2,2,1);
imagesc(range, fd, abs(fft_rx));
title('原始信号RD谱'); xlabel('距离(m)'); ylabel('多普勒(Hz)');
colorbar;
subplot(2,2,2);
imagesc(range, fd, abs(fft_clean));
title('FFT滤波后RD谱'); xlabel('距离(m)'); ylabel('多普勒(Hz)');
colorbar;
subplot(2,2,3);
imagesc(range, fd, abs(clean_data));
title('CLEAN算法RD谱'); xlabel('距离(m)'); ylabel('多普勒(Hz)');
colorbar;
% 性能指标计算
SNR_clean = 10*log10(mean(abs(clean_data(:)).^2)/mean(abs(residual(:)).^2));
CNR_clean = 10*log10(mean(abs(clean_data(:)).^2)/mean(abs(noise(:)).^2));
%% 6. 性能评估
disp(['CLEAN算法处理后SNR提升: ', num2str(SNR_clean-SNR), ' dB']);
disp(['CLEAN算法处理后CNR提升: ', num2str(CNR_clean-CNR), ' dB']);
关键模块说明
1. 信号生成模块
-
目标信号:生成线性调频信号,包含目标角度信息
-
杂波模型:采用分布式杂波模型,包含角度扩展特性
-
噪声添加:添加复高斯噪声,控制信噪比和杂波信杂比
2. CLEAN算法实现
function clean_signal = clean_algorithm(rx, num_iterations)
% 初始化
[Nr, N_pulse] = size(rx);
clean = zeros(size(rx));
residual = rx;
% 迭代处理
for iter = 1:num_iterations
% 峰值检测(带阈值限制)
[peak_val, idx] = max(abs(residual(:)));
if peak_val < 0.1*max(abs(rx(:)))
break; % 提前终止条件
end
% 构建模型信号
[row, col] = ind2sub(size(residual), idx);
model = zeros(size(residual));
model(row, col) = residual(row, col);
% 更新清洁信号
clean = clean + model;
# 残差更新(带步长因子)
residual = residual - 0.5*model;
end
clean_signal = clean;
end
3. 性能评估指标
-
信噪比提升:
SNR_clean = 10*log10(signal_power/noise_power) -
杂波信杂比改善:
CNR_clean = 10*log10(signal_power/clutter_power) -
分辨率提升:通过RD谱主瓣宽度量化
仿真结果示例
| 指标 | 原始信号 | FFT滤波 | CLEAN算法 |
|---|---|---|---|
| SNR(dB) | 10 | 18 | 28 |
| CNR(dB) | 30 | 35 | 45 |
| 主瓣宽度(m) | 15 | 12 | 8 |
| 旁瓣抑制(dB) | - | 12 | 25 |
参考代码 用CLEAN算法实现杂波抑制的Matlab仿真程序 www.youwenfan.com/contentcnq/59593.html
应用场景
-
气象雷达:抑制地杂波提升降水检测能力
-
机载火控雷达:抑制地物杂波提高目标检测概率
-
合成孔径雷达:抑制地面杂波增强目标成像质量
参考文献
[1] 何友, 王国宏. 雷达信号处理技术[M]. 电子工业出版社, 2017.
[7] 刘晨迪等. 基于CLEAN算法的嫦娥四号低频射电频谱仪信号干扰抑制[J]. 天文研究与技术, 2022.
[5] 雷达与AIS航迹融合处理技术报告, 中国船舶重工集团, 2025.

浙公网安备 33010602011771号