【雷达信号检测】滑动式GRCR,用于脉冲雷达信号检测(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

基本原理

应用价值

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

雷达信号是具有一定可配置占空比的脉冲信号。假设有一个旋转的雷达天线,则次级用户(SU)终端接收的信号具有突发模式,由于雷达信号的异步定时和感应间隔,该脉冲群内的脉冲数是随机的。可配置的系统参数包括次级用户接收机的数量、所有 SU 的平均信噪比 (SNR)、生成的接收机工作特性 (ROC) 曲线上的点数、蒙特卡洛事件的数量、每个 SU 收集的样本数、雷达信号占空比、每个雷达信号突发的脉冲数、 雷达信号的脉冲宽度、窗口大小、滑动传感窗口的步长、所有 SU 的平均噪声方差、噪声功率和接收信号的均值变化的分数、雷达-SU 信道的类型(加性高斯白噪声或平坦而缓慢的瑞利衰落),以及噪声功率和接收信号功率的变化模式(在所有仿真运行中固定或在运行)。

滑动式GRCR(Goertzel-Ratio Cross Ambiguity Function-based Detector,戈泽尔比值交叉模糊函数检测器)是一种应用于脉冲雷达信号检测领域的高级技术。该方法结合了Goertzel算法和交叉模糊函数(CAF, Cross Ambiguity Function)分析,旨在提高雷达系统在复杂环境中的目标检测能力,特别是对弱信号和干扰的处理能力。下面简要介绍其基本原理和应用价值。

基本原理

  1. Goertzel算法:这是一种高效的离散傅里叶变换(DFT)实现方式,特别适用于只对频谱中特定频率感兴趣的场景。相比完整的DFT,它减少了计算量,适用于实时处理和资源受限的系统。在雷达信号处理中,Goertzel算法可以用来高效地检测预定的回波频率或分析信号的频谱特性。

  2. 交叉模糊函数(CAF):CAF是雷达信号处理中的一个关键工具,用于评估接收信号与参考信号(如发射脉冲)之间的相关性,提供时间延迟和多普勒频移信息,从而帮助确定目标的位置和速度。CAF能够清晰地展示出目标在时延-多普勒平面上的分布,对于分辨多个目标、识别杂波和处理多路径效应至关重要。

  3. 滑动式GRCR:将Goertzel算法与CAF结合,通过在时延-多普勒域上滑动一个窗口来连续分析接收到的信号,这种方法允许对不同时间段或频率范围内的信号特性进行动态评估。通过比较不同窗口内CAF的特性,尤其是Goertzel比值(即信号与期望信号形态的相似度),可以有效地区分真实目标回波与噪声或干扰,从而提高检测的准确性和鲁棒性。

应用价值

  • 增强目标检测能力:在低信噪比条件下,滑动式GRCR能更有效地提取目标信号,减少漏检和误检。
  • 抗干扰性能提升:通过精细的频率选择和时延-多普勒分析,可以有效区分目标信号和环境干扰,提高系统的抗干扰能力。
  • 资源效率:Goertzel算法的使用减少了计算和存储资源的需求,使得该方法适合于嵌入式和实时处理系统。
  • 灵活性:滑动窗口的大小和步长可以根据实际应用场景调整,提供了针对不同任务和环境的适应性。

综上所述,滑动式GRCR作为一种先进的雷达信号检测技术,通过结合高效算法和深入的信号分析,为现代雷达系统提供了强大的目标检测和识别能力,尤其适用于复杂电磁环境下的高性能雷达应用。

📚2 运行结果

主函数部分代码:


clear all; clc; % close all;

%% System parameters #############################################################

m = 5;          % Number of SU receivers.
SNRavg = -10;   % Signal-to-noise ratio averaged over all SUs, dB.
runs = 5000;    % Number of Monte Carlo runs for estimating Pd and Pfa.
Npt = 50;       % Number of points on the resulting ROC curve.
Sigma2avg = 1;  % Average noise power at the SUs' receivers.
FracN = 0.95;   % Fraction of noise power variations about the mean.
FracP = 0.95;   % Fraction of received power variations about the mean.
Channel = 1;    % Radar-SU channel: "0" = AWGN; "1" = flat and slow Rayleigh.
NoiseVar = 1;   % Noise variance: "0" = fixed variances over all runs; "1" = variable.
RxPower = 1;    % Received power: "0" = fixed powers over all runs; "1" = variable.
D = 0.05;       % Radar signal duty-cycle ratio (Wp/period).
N = 4;          % Number of pulses per radar signal burst. 
Wp = 20;        % Pulse width of the radar signal, in samples.
n = Wp*N/D;     % Total number of samples per sensing interval.
Sw = Wp;        % Window size (number of samples per sensing round).
Ss = Sw;        % Step size of the sliding sensing window (irrelevant if Sw=n).

%% ################################################################################

Sn = (n/Sw-1)/(Ss/Sw) + 1; % Number of steps (sensing rounds) during a sensing interval. 
PRxavg = Sigma2avg*(10^(SNRavg/10)); % Average received power
Ptx = PRxavg; % Radar signal power
SNRa=10*log10(((N+1)/2)*PRxavg/(Sigma2avg*N)); % Approximate SNR

disp( [ 'Number of SUs,              m  = ', num2str(m) ]);
disp( [ 'Number of samples per SU,   n  = ', num2str(n) ]);
disp( [ 'Radar signal duty-cycle,    D = ', num2str(D) ]);
disp( [ 'Radar signal pulse width,   Wp = ', num2str(Wp) ]);
disp( [ 'Number of pulses per burst, N = ', num2str(N) ]);
disp( [ 'Sliding window step size,   Ss = ', num2str(Ss) ]);
disp( [ 'Window size,                Sw = ', num2str(Sw) ]);
disp( [ 'Number of sensing rounds,   Sn = ', num2str(Sn) ]);
disp( [ 'Configured SNR in dB,       SNR = ', num2str(SNRavg) ]);
disp( [ 'Approx. actual SNR in dB    SNRa = ', num2str(SNRa) ]);


%% Noise variances (m x 1) when fixed over all sensing rounds (see main loop):
if NoiseVar==0  % Fixed noise variances
 Sigma2 = rand(m,1)*(2*FracN)+(1-FracN); Sigma2 = (Sigma2/mean(Sigma2))*Sigma2avg;
end
%% Received powers (m x 1) when fixed over all sensing rounds (see main loop):
if RxPower==0  % Fixed rx powers
   PRx = rand(m,1)*(2*FracP)+(1-FracP);   PRx = PRx/mean(PRx)*PRxavg;
end

%% Radar signal vector (n x 1) with N pulses:
S0 = [ones(Wp,1); zeros(Wp/D-Wp,1)];
for b = 1:N-1
    S0 = [S0; ones(Wp,1); zeros(Wp/D-Wp,1)];

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]邱益维,李晓峰,田浩.基于单光子激光雷达信号的快速恒虚警检测研究[J].应用激光,2024,44(05):122-128.DOI:10.14128/j.cnki.al.20244405.122.

[2]张汉伟,周秀珍.雷达、通信、干扰信号一体化检测识别技术研究[J].舰船电子对抗,2024,47(01):77-83+120.DOI:10.16426/j.cnki.jcdzdk.2024.01.013.

🌈4 Matlab代码实现

图片

  • 17
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值