✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
🔥 内容介绍
1. 前言
随着雷达技术的发展,雷达干扰也变得越来越普遍。雷达干扰可以分为主动干扰和被动干扰。主动干扰是指干扰机主动向雷达发射干扰信号,以降低雷达的探测性能。被动干扰是指干扰机利用雷达发射的信号进行反射或散射,以产生虚假目标,从而干扰雷达的正常工作。
FMCW 雷达是一种新型的雷达,具有抗干扰能力强、分辨率高、测距精度高等优点。然而,FMCW 雷达也存在着一些弱点,例如容易受到连续波干扰的影响。连续波干扰是一种常见的主动干扰,它可以使 FMCW 雷达的接收机饱和,从而降低雷达的探测性能。
2. 基于 CFAR 的 FMCW 雷达干扰抑制方法
为了抑制连续波干扰,可以采用基于 CFAR(恒虚警率)的干扰抑制方法。CFAR 是一种自适应滤波技术,它可以根据雷达接收信号的统计特性,自动调整滤波器的参数,以抑制干扰信号,同时保持对目标信号的检测性能。
基于 CFAR 的 FMCW 雷达干扰抑制方法主要包括以下几个步骤:
-
信号预处理:对雷达接收信号进行预处理,包括滤波、去噪等。
-
背景噪声估计:估计雷达接收信号中的背景噪声功率。
-
门限计算:根据背景噪声功率和虚警率,计算干扰抑制的门限。
-
干扰信号检测:将雷达接收信号与门限进行比较,检测出干扰信号。
-
干扰信号抑制:对检测出的干扰信号进行抑制,可以采用滤波、抵消等方法。
📣 部分代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CFAR-based interference suppression
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
close all; clear; clc;
oldpath = path;
addpath('./Util_CFAR_IM/','./Util_FMCW/','./Util_plot/')
flag_plot = 0; % boolean flag that turns on/off the figure plotting:
% flag_plot=1, plot figure;
% flag_plot=0, do not plot.
Ftsz = 12;
fig_dir = './figs/';
%% FMCW radar
ii = sqrt(-1);
c = 3e8;
f_c = 77e9; %3e9; % center frequency 3GHz
T_sw = 100e-6;%500e-6; % Sweep time 200 us
BW = 600e6;%40e6;
Num = 1;
6, real(sig_CFAR_Burg(ind_inset_cfar)),'g-.')
grid on
ylim([-3.2 3.2])
if flag_plot == 1
set(gcf, 'PaperUnits', 'inches', 'PaperSize', [4 3], 'PaperPosition', [0 0 4 3])
print(hf, '-dpdf', '-r300', [fig_dir 'pt_RawSig_RealPart_AftSup_' num2str(SNR) 'dB_Recv.pdf'])
print(hf, '-dpng', '-r300', [fig_dir 'pt_RawSig_RealPart_AftSup_' num2str(SNR) 'dB_Recv.png'])
saveas(hf, [fig_dir 'pt_RawSig_RealPart_AftSup_' num2str(SNR) 'dB_Recv.fig'])
end
%% Range profile
n_ft = 2^(nextpow2(length(sig_wd)) + 2);
r_axis_Aft = f_s/n_ft*(0:n_ft-1)/abs(sweep_slope)*c/2;
%================ANC=================
[rp_ANC, sig_fft_pos,sig_fft_neg] ...
= AdaptiveNoiseCanceller(sig_full, 10, 80, 1.8, n_ft);
%
rp_CFAR_Z = fft(sig_CFAR_Z, n_ft);
rp_CFAR_AC = fft(sig_CFAR_AC, n_ft);
rp_CFAR_Burg = fft(sig_CFAR_Burg, n_ft);
rp_wd = fft(sig_wd, n_ft);
max_rp = max(abs( [ rp_CFAR_Z; rp_CFAR_AC; rp_wd ; rp_ANC] ));
rp_CFAR_Z_norm = db( abs(rp_CFAR_Z) / max_rp );
rp_CFAR_AC_norm = db( abs(rp_CFAR_AC) / max_rp );
rp_wd_norm = db( abs(rp_wd) / max_rp );
rp_ANC_norm = db( abs(rp_ANC) / max_rp);
rp_CFAR_Burg_norm = db( abs(rp_CFAR_Burg) / max_rp);
hf = figure
plot(r_axis_Aft(1:n_ft/2), rp_ANC_norm, 'g--',...
r_axis_Aft, rp_wd_norm,'k-',...
r_axis_Aft, rp_CFAR_Z_norm,'r--',...
r_axis_Aft, rp_CFAR_AC_norm,'b-.',...
r_axis_Aft, rp_CFAR_Burg_norm,'m:')
axis([0 250 -50 10]);
grid on
legend('ANC','WD','CFAR-Z','CFAR-AC','CFAR-Burg','Location','south','NumColumns',2)
xlabel('Range [km]', 'fontsize', Ftsz)
ylabel('Normalized amplitude [dB]', 'fontsize', Ftsz)
title('RP after IM', 'fontsize', Ftsz)
ind_inset = r_axis_Aft>=29 & r_axis_Aft<=31;
r_axis_inset = r_axis_Aft(ind_inset);
axes('position', [0.3 0.65 0.25 0.25])
plot(r_axis_inset, rp_ANC_norm(ind_inset),'g--',...
r_axis_inset, rp_wd_norm(ind_inset),'k-',...
r_axis_inset, rp_CFAR_Z_norm(ind_inset),'r--',...
r_axis_inset, rp_CFAR_AC_norm(ind_inset),'b-.',...
r_axis_inset, rp_CFAR_Burg_norm(ind_inset),'m:')
grid on
ylim([-20 2])
ind_inset = r_axis_Aft>=148.5 & r_axis_Aft<=154.5;
r_axis_inset = r_axis_Aft(ind_inset);
axes('position', [0.66 0.65 0.23 0.25])
plot(r_axis_inset, rp_ANC_norm(ind_inset),'g--',...
r_axis_inset, rp_wd_norm(ind_inset),'k-',...
r_axis_inset, rp_CFAR_Z_norm(ind_inset),'r--',...
r_axis_inset, rp_CFAR_AC_norm(ind_inset),'b-.',...
r_axis_inset, rp_CFAR_Burg_norm(ind_inset),'m:')
grid on
ylim([-25 0])
if flag_plot==1
set(gcf, 'PaperUnits', 'inches', 'PaperSize', [4 3], 'PaperPosition', [0 0 4 3])
print(hf, '-dpdf', '-r300', [fig_dir 'pt_RP_AftSup_' num2str(SNR) 'dB.pdf'])
print(hf, '-dpng', '-r300', [fig_dir 'pt_RP_AftSup_' num2str(SNR) 'dB.png'])
saveas(hf, [fig_dir 'pt_RP_AftSup_' num2str(SNR) 'dB.fig'])
end
%% Performance evaluation
len_cfar_z = length(sig_CFAR_Z);
% SINR
SINR_cfar_z = db(norm(sig_Rx_trc(1:len_cfar_z)) ...
/ norm(sig_CFAR_Z - sig_Rx_trc(1:len_cfar_z).' ) );
SINR_cfar_ac = db( norm(sig_Rx_trc(1:len_cfar_z) ...
/ norm(sig_CFAR_AC - sig_Rx_trc(1:len_cfar_z).' ) ) );
SINR_cfar_burg = db( norm(sig_Rx_trc(1:len_cfar_z) ...
/ norm(sig_CFAR_Burg - sig_Rx_trc(1:len_cfar_z).' ) ) );
SINR_wd = db( norm(sig_Rx_trc) / norm(sig_wd - sig_Rx_trc.') );
sig_ANC = ifft(rp_ANC, n_ft);
sig_ANC = sig_ANC(1:N_sig);
SINR_anc = db( norm(sig_Rx_trc) / norm(sig_ANC - sig_Rx_trc.' ) );
% correlation coefficient
rho_cfar_z = sig_CFAR_Z' * sig_Rx_trc(1:len_cfar_z).'/norm(sig_CFAR_Z)/norm(sig_Rx_trc(1:len_cfar_z));
rho_cfar_ac = sig_CFAR_AC' * sig_Rx_trc(1:len_cfar_z).'/norm(sig_CFAR_AC) /norm(sig_Rx_trc(1:len_cfar_z));
rho_cfar_burg = sig_CFAR_Burg' * sig_Rx_trc(1:len_cfar_z).'/norm(sig_CFAR_Burg) /norm(sig_Rx_trc(1:len_cfar_z));
rho_wd = sig_wd' * sig_Rx_trc.'/norm(sig_wd) / norm(sig_Rx_trc);
rho_anc = sig_ANC' * sig_Rx_trc.' / norm(sig_ANC) / norm(sig_Rx_trc);
[SINR_cfar_z, SINR_cfar_ac,SINR_cfar_burg, SINR_wd, SINR_anc]
rho =[rho_cfar_z, rho_cfar_ac, rho_cfar_burg, rho_wd, rho_anc];
rho_amp = abs(rho)
rho_phase = angle(rho)
% rho = rho_amp .* exp(ii*rho_phase)
%close all
hf = figure
plot(t*1e6, real(sig_ANC));
grid on
axis tight
% ylim([-2.5 2.5])
xlabel('Time [\mus]', 'fontsize', Ftsz)
ylabel('Amplitude', 'fontsize', Ftsz)
title('Beat signal recovered with ANC', 'fontsize', Ftsz)
if flag_plot == 1
set(gcf, 'PaperUnits', 'inches', 'PaperSize', [4 3], 'PaperPosition', [0 0 4 3])
print(hf, '-dpdf', '-r300', [fig_dir 'pt_RawSig_RealPart_AftSup_' num2str(SNR) 'dB_ANC.pdf'])
print(hf, '-dpng', '-r300', [fig_dir 'pt_RawSig_RealPart_AftSup_' num2str(SNR) 'dB_ANC.png'])
saveas(hf, [fig_dir 'pt_RawSig_RealPart_AftSup_' num2str(SNR) 'dB_ANC.fig'])
end
if flag_plot==1
save([fig_dir 'simu_pt_data_' num2str(SNR) '.mat'],...
'sig_Rx_trc','sig_CFAR_AC','sig_CFAR_Z', 'sig_ANC','sig_wd',...
'SINR_cfar_ac','SINR_cfar_z','SINR_anc','SINR_wd',...
'rho_cfar_ac', 'rho_cfar_z', 'rho_anc', 'rho_wd',...
'rp_CFAR_AC', 'rp_CFAR_Z', 'rp_ANC', 'rp_wd',...
'SNR', 'SINR_0', 'r_axis_Aft', 'n_ft', 't');
end
%% restore the search directory
path = oldpath;
⛳️ 运行结果
3. 仿真结果
为了验证基于 CFAR 的 FMCW 雷达干扰抑制方法的有效性,进行了仿真实验。仿真实验中,雷达接收信号由目标信号、干扰信号和背景噪声组成。目标信号为点目标,干扰信号为连续波干扰,背景噪声为高斯白噪声。
仿真结果表明,基于 CFAR 的 FMCW 雷达干扰抑制方法能够有效地抑制连续波干扰,同时保持对目标信号的检测性能。
4. 结论
基于 CFAR 的 FMCW 雷达干扰抑制方法是一种有效的干扰抑制方法。该方法能够根据雷达接收信号的统计特性,自动调整滤波器的参数,以抑制干扰信号,同时保持对目标信号的检测性能。仿真结果表明,该方法能够有效地抑制连续波干扰,为 FMCW 雷达的抗干扰性能提供了保障。
🔗 参考文献
[1] 魏力,石丹,崔强,等.基于波形设计的车载FMCW雷达干扰抑制方案[J].[2024-02-11].
[2] 肖泽龙,李凡奇,胡泰洋,等.针对脉冲体制强辐射源干扰的FMCW雷达干扰抑制方法:CN202110715070.5[P].CN202110715070.5[2024-02-11].
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类