基于MATLAB的CI切片重排干扰仿真与参数分析
2026/9/10 3:27:51 网站建设 项目流程

简介:适用于雷达电子战与干扰技术研究的MATLAB脚本,围绕切片干扰(Chopping and Interleaving)算法提供完整实现,帮助工程师和研究人员直观理解通过切割、重排雷达信号来破坏敌方探测与跟踪的机制。压缩包内仅含1个m文件,大小1KB,属于轻量级源码,便于直接运行查看效果并在此基础上修改参数或扩展功能。目前已有1051人学习下载,适合作为高校雷达课程、电子战培训或抗干扰算法设计的教学示例与参考起点。脚本内部涵盖信号生成、切片分割、交错组合、干扰效果评估等关键环节,其中信号生成部分支持脉冲序列、频率调制、相位编码等常见雷达波形,切片与交织模块可按预设规则或随机方式重组信号片段,读者可对照代码梳理雷达干扰的典型流程,也可将其嵌入SystemVue等系统仿真环境进行硬件在环验证,进一步评估误检率、漏检率等干扰性能指标。

1. ChoppingAndInterleaving:一种面向线性调频雷达的切片重排干扰

在工程仿真里,复制一个线性调频脉冲然后整体转发,脉压匹配滤波后在固定延迟处只会出现一个又高又窄的单峰,稍微有点经验的雷达操作员都能把它从真实回波里区分出来。ChoppingAndInterleaving(后文统一写 C&I)换了一种思路:把截获到的雷达脉冲在时间轴上切成若干段,再按新的顺序拼接发射。切片宽度和重排间隔设计得当的话,匹配滤波输出端会出现一串幅度相近、位置可控的假目标,并且这串假目标还能在多次积累后保持稳定,干扰效果比单峰转发更贴合工程需要。下面直接从信号结构拆起,用 MATLAB 从基带脉冲开始把 C&I 的完整链路写一遍,给出一套能改参数复现的脚本,再讨论切片宽度、重排间隔和相位连续性问题。适合正在做雷达信号级仿真、DRFM 干扰建模或电子对抗效果评估的工程师参考。

2. C&I 干扰的信号结构:切片宽度、重排间隔与脉压输出

2.1 从截获脉冲到切片序列

雷达发射的线性调频脉冲在基带可以写成 s(t)=rect(t/T)·exp(jπKt²),其中 T 是脉宽,K=B/T 是调频斜率。干扰机截获信号后,利用 DRFM 得到基带复制品,这一步通常还会叠加上一个与距离对应的延迟。C&I 的第一步是把这段截获脉冲按固定切片宽度 τ 切成 N=round(T/τ) 段,每段保留自己的幅度和相位,段内不做调制,只改变它在时间轴上的排列位置。

切片后的信号模型可以写作 x(t)=Σ Aᵢ·s(t−tᵢ),其中 tᵢ=t₀+i·τ 是第 i 片的原始起点。这里的 t₀ 是干扰机转发相对雷达发射时刻的固有延迟。切片动作本身在 MATLAB 里不需要真的做 FFT 之类的频率处理,只需按时间索引截取复基带样点。下面这段代码生成一段基带 LFM,并演示按索引切片的思路:

fs = 200e6; % 采样率 200 MHz T = 10e-6; % 脉宽 10 us B = 20e6; % 带宽 20 MHz K = B / T; % 调频斜率 t = (-T/2 : 1/fs : T/2 - 1/fs).'; % 基带时间轴 s = exp(1j * pi * K * t.^2); % 复基带 LFM 脉冲 tau = 1e-6; % 切片宽度 1 us Nc = round(T / tau); % 切片数量 rise = (0:Nc-1).' * tau; % 每片相对脉冲起点的起始时间 for n = 1:Nc idx = (t >= rise(n) - T/2) & (t < rise(n) - T/2 + tau); seg = s(idx); % 第 n 片,包含幅度和相位 % 后续按重排顺序把 seg 放到新位置即可 end

这段代码里K = B / T决定了信号的瞬时频率变化率,是后面匹配滤波峰值位置计算的基础。tau是切片宽度,它直接影响假目标之间的最小间隔:切得越窄,重排后单位时间内的假目标越多,但单片的时宽也越短,脉压后的单峰增益会下降。rise保存的是每片在原始脉冲内部的时间偏移,重排时真正要移动的正是这些时间偏移量。

2.2 重排公式与匹配滤波器输出中的主峰位置

C&I 的关键操作在“重排”这两个字上。设切片原始编号为 i,重排后它被放到编号 p(i) 的位置,其中 p 是一个从 0 到 N-1 的排列。再引入重排间隔 d,它表示重排后相邻切片中心的时间距离。第 i 片在新序列中的起始时间变成 t₀+p(i)·d,那么它与原始位置的差值为:

Δᵢ = p(i)·d − i·τ

匹配滤波器的输出是干扰信号与发射脉冲共轭反转的卷积。由于每片内部仍然是完整的 LFM 片段,脉压后该片会在时延轴上形成一个主峰,峰值位置就落在 Δᵢ 对应的时延上。也就是说,N 片切片经过重排后,理论上有 N 个主峰,主峰之间的相对间距由 Δᵢ 的差值决定。实际仿真里这些主峰之间还会出现一些低幅度的交叉项,它们来自不同切片之间的互相关,幅度通常低于主峰 10 dB 以上,不影响假目标群的判读,但当切片段不连续、相位突变明显时,交叉项会抬高基底,表现为脉压输出整体抬升。

从频域看,切片操作等效于用一组矩形窗去截断信号,重排则是对截断产物做时移线性叠加。时域切片会带来频谱旁瓣,这在匹配滤波后表现为假目标峰两侧的裙边。所以 C&I 不仅仅是在时间轴上“打乱”,它的频谱结构已经和原始 LFM 不同,这就是干扰机发射信号和雷达发射信号在脉压后不重合的根本原因。

2.3 三个关键设计参数与一张参考表

做 C&I 仿真时,最先定下来的应该是切片宽度 τ、重排间隔 d 和重排序列 p。它们分别对应“切多碎”“拉开多远”“按什么顺序放”。先给一组我常用的参数范围,后面章节再深入分析:

参数含义常用范围对脉压输出的影响
τ切片宽度T/50 ~ T/10决定假目标间隔下限,τ 越小假目标越密
d重排间隔τ ~ 2τ控制假目标在时延轴上的散布程度
p重排序列伪随机排列决定假目标群的分布形状
N切片数量T/τ假目标数量上限,N 增加旁瓣基底升高
JSR干信比10 ~ 20 dB干扰峰相对噪声底的高度

一个常见的误区是把 τ 当作干扰带宽来理解。切片宽度影响的是匹配滤波后主峰的时域位置和宽度,而不是干扰信号的频谱范围。干扰信号的带宽在切片瞬间就已经被展宽,后面的重排只是重新分配这些频谱分量在时间上的落点。理解这一点,就能解释为什么 C&I 对 LFM 雷达效果明显:LFM 的匹配滤波依赖完整的时频线性关系,切片重排刚好破坏了这种关系,让原本应该压缩成单峰的能量分散到多个时延上。

3. MATLAB 实现切片干扰:最小复现脚本与参数表

3.1 可以直接运行的基带仿真脚本

这一节给出一段完整的基带级 C&I 仿真脚本,逻辑是按照“生成 LFM → 模拟截获延迟 → 切片 → 随机重排 → 匹配滤波”的顺序往下走。代码里对切片重排部分做了比较清楚的索引处理,可以直接复制到 MATLAB 里运行,也可以改参数后作为仿真模板。

% cinj_demo.m C&I 切片重排干扰最小复现脚本 fs = 200e6; T = 10e-6; B = 20e6; K = B / T; pad = round(5e-6 * fs); % 前后填充,避免重排越界 t = (-T/2 : 1/fs : T/2 - 1/fs).'; s = exp(1j * pi * K * t.^2); s_delay = [zeros(round(2e-6*fs), 1); s]; % 模拟 2 us 截获延迟 Nbuf = length(s_delay) + 2 * pad; buf = zeros(Nbuf, 1); buf(pad+1 : pad+length(s_delay)) = s_delay; tau = 1e-6; % 切片宽度 1 us d_hop = 1.2e-6; % 重排间隔 1.2 us Nc = round(T / tau); perm = randperm(Nc); % 伪随机重排序列 jsr_db = 15; % 干信比 15 dB jsr_amp = 10^(jsr_db / 20); seg_len = round(tau * fs); x_int = zeros(Nbuf, 1); for n = 1:Nc % 提取第 n 片切片 seg_start = pad + round( (n-1) * tau * fs ); seg = buf(seg_start : seg_start + seg_len - 1); % 按重排序号放到新位置 out_start = pad + round( (perm(n)-1) * d_hop * fs ); x_int(out_start : out_start + seg_len - 1) = ... x_int(out_start : out_start + seg_len - 1) + jsr_amp * seg; end % 匹配滤波 h = conj(s(end:-1:1)); y = conv(x_int, h, 'same'); y = y(pad+1 : end-pad); % 截掉填充区 t_us = (0:length(y)-1) / fs * 1e6; figure; plot(t_us, 20*log10(abs(y) + eps)); xlabel('时间 / us'); ylabel('相对幅度 / dB'); grid on;

代码里的seg_start是根据切片编号 n 和切片宽度 τ 计算的原始位置,out_start则是重排后的新位置。用randperm(Nc)生成随机序列,每运行一次得到不同的假目标分布,实际工程里可以固定随机种子来对比不同重排序列的干扰效果。jsr_amp控制干扰信号的幅度,改成 1 就是 0 dB 干信比,匹配滤波后干扰峰和噪声底的关系会随之变化。

运行后会在时间轴上看到一串间隔不等的峰,峰数量接近 Nc=10,主峰之间的间距与d_hop和 τ 的差值有关。如果d_hop远大于 τ,假目标群会明显拉散,峰值个数不变但分布变稀疏。

3.2 核心函数与参数说明

上面的脚本适合一次跑完,但做参数扫描时更建议把切片重排封装成独立函数。下面是我常用的接口,输入为原始脉冲、采样率、切片宽度、重排间隔、重排序列和干信比,输出为基带干扰信号:

function x_int = cinj_interleave(s, fs, tau, d_hop, perm, jsr_db) % C&I 切片干扰基带信号生成 % s : 截获到的单脉冲基带信号(列向量) % fs : 采样率 % tau : 切片宽度,单位秒 % d_hop : 重排间隔,单位秒 % perm : 切片重排顺序,1 到 round(T/tau) 的排列 % jsr_db : 干信比,单位 dB T = length(s) / fs; Nc = length(perm); pad = round(0.5e-6 * fs); seg_len = round(tau * fs); Nbuf = length(s) + 2 * pad + round(Nc * d_hop * fs); buf = zeros(Nbuf, 1); buf(pad+1 : pad+length(s)) = s.'; x_int = zeros(Nbuf, 1); jsr_amp = 10^(jsr_db / 20); for n = 1:Nc seg_start = pad + round((n-1) * tau * fs); seg = buf(seg_start : seg_start + seg_len - 1); out_start = pad + round((perm(n)-1) * d_hop * fs); x_int(out_start : out_start + seg_len - 1) = ... x_int(out_start : out_start + seg_len - 1) + jsr_amp * seg; end % 截取有效范围,长度与输入一致 x_int = x_int(1:length(s) + round(Nc * d_hop * fs)); end

函数内部用的是复基带信号,实信号需要先做希尔伯特变换或正交下变频再传入。pad的作用是给重排后的信号留出前后裕量,避免切片移动到负数索引。返回值不再是单个脉冲的长度,需要考虑重排后的时延扩展,通常取输入长度加上Nc * d_hop对应的采样点数。这样设计后,调用方可以方便地对比不同 τ 和 d 组合的输出,而不需要每次都重写截取逻辑。

3.3 用图观察干扰效果

仿真脚本跑完,画图时重点看三件事。一是主峰数量是否等于切片数 Nc,如果少于 Nc,说明有切片落到了匹配滤波窗口之外,需要加大缓冲区的预留长度。二是主峰间隔是否与d_hop - tau接近,C&I 在理想情况下相邻假目标的时延差主要取决于这两个参数,间隔完全随机会让假目标群看起来更像噪声压制。三是基底电平,交叉项会把脉压旁瓣抬高,观察20*log10(abs(y))里主峰之间的最低电平,如果高于噪声底 20 dB,说明切片间的相位不连续已经明显影响了干扰质量。

4. 参数边界与对抗:从 C&I 到工程可用的干扰样式

4.1 切片宽度与码元对齐,相位编码雷达的约束

C&I 最常用的对象是 LFM 雷达,但实际工程中会遇到相位编码雷达,比如 Barker 码或 m 序列调相。相位编码信号的匹配滤波依赖码元序列的完整性,如果切片宽度 τ 没有对齐码元边界,重排后的干扰信号在解码时会产生大量随机相位噪声,假目标峰难以形成。解决办法是把 τ 取成码元宽度 Tc 的整数倍,即 τ=M·Tc,M 为正整数。这样每个切片内部都包含完整的码元序列,重排后在新的位置上仍然能产生相关峰。

用 MATLAB 验证时,可以先生成一段二相编码信号,再按照 M·Tc 切片、重排、做匹配滤波。对比 τ 等于 3 倍码元和 3.5 倍码元两种情况,前者脉压后主峰清晰,后者峰值会下降 6 dB 以上且旁瓣升高。这一点对做干扰效果仿真很重要,很多初学仿真的人直接用 LFM 的参数去干扰相位编码雷达,得到的假目标群要么杂乱无章,要么能量分散到无法检测。

4.2 重排间隔的选择:稀疏假目标与压制区的折中

重排间隔 d 决定假目标在时延轴上的稀疏程度。d 取 τ 时,切片重排后正好前后相接,假目标群连续而密集,适合制造一个看起来像扩展目标的压制区。d 取 2τ 时,切片之间留出空白时隙,匹配滤波后主峰之间出现明显间隔,适合做多个可分辨假目标。实际操作中 d 最好不要小于 τ,否则相邻切片会重叠,重叠部分的复数叠加会破坏切片内部的相位结构,导致主峰幅度抖动。

如果目标是欺骗式干扰,要求假目标位置精确可控,应该用固定 d 加上固定重排序列。如果目标是压制式干扰,侧重让假目标群铺满一段距离区间,伪随机 d 的抖动会更好用。我一般在参数扫描时把 d 限制在 τ 到 1.5τ 之间,先跑一次快速仿真看假目标分布,再根据雷达的距离分辨单元调整。

4.3 MTI 雷达与干扰重排顺序的耦合

动目标显示(MTI)雷达利用相邻脉冲对消来滤除静止目标。C&I 干扰如果每个脉冲都用相同的重排序列和相同的 d,假目标群在多普勒维度上表现为固定回波,会被 MTI 当作静止目标抑制掉。应对做法是每个脉冲周期切换重排序列,但这种切换会带来假目标群的位置抖动,在多次积累后降低峰值稳定性。工程上常用的做法是:在一段时间内固定重排序列,保持假目标群的相干性,积累数个脉冲后整体切换到另一组序列。这样 MTI 对消器在切换瞬间会产生残差,之后的驻留窗内仍然能看到较稳定的假目标。

在 MATLAB 里做 MTI 对抗仿真,可以构造一列脉冲重复间隔 PRI,每个 PRI 内生成一段 C&I 干扰信号,然后做两脉冲对消。对比固定 perm 和逐脉冲切换 perm 两种模式的输出,观察对消后剩余峰的幅度。固定 perm 的剩余峰会明显衰减,逐脉冲切换则会在对消输出端产生宽带抖动,这就是 C&I 与 MTI 对抗的基本权衡。

4.4 一个边界案例表

参数组合脉压输出特征适用场景
τ 接近 T,d≈0单峰加高旁瓣,近似转发式干扰距离欺骗,制造单个假目标
τ=T/20,d=τ,固定 perm间隔约 τ 的密集假目标群距离门拖引,扩展目标模拟
τ=T/50,d=2τ,随机 perm稀疏且随机分布压制式干扰,迷惑检测器
τ=M·Tc,固定 perm,d=τ相位编码雷达多个相关峰针对相位编码雷达
τ=T/10,d=τ,逐脉冲切换 perm脉压峰数多但驻留间不稳定对抗 MTI,兼顾距离欺骗

这个表的核心信息是:C&I 不是一组固定参数,而是切片、重排两个自由度组合出来的干扰样式族。调整 τ 可以控制假目标的最小间隔,调整 d 控制散布范围,调整 perm 控制分布形状,三者解耦,独立设置。

5. 用 MATLAB 验证干扰效果:峰位检测、旁瓣代价与驻留稳定性

5.1 峰位与假目标计数

验证 C&I 干扰是否达到预期,第一件事是统计脉压输出里的主峰位置和数量。MATLAB 里用findpeaks加高度门限就能完成:

y_env = abs(y); thr = max(y_env) * 0.35; % 主峰高度门限,按最大峰值的 35% 取 [pks, locs] = findpeaks(y_env, 'MinPeakHeight', thr, 'MinPeakDistance', 20); peak_pos_us = locs / fs * 1e6; % 转成微秒 % 理论峰位:原始切片起点加上 Δi 对应的时延偏移 theory_pos = (perm.' * d_hop - (0:Nc-1).' * tau) * 1e6 ... + 2e6; % 加上固有延迟 2 us

MinPeakDistance按采样点数设置,避免同一个主峰的旁瓣被重复计数。把实测peak_pos_ustheory_pos做差,如果最大偏差在 1~2 个采样点以内,说明重排逻辑正确。偏差大的话,基本可以确定是切片对齐或缓冲索引问题,优先检查seg_startout_start的计算。

5.2 多 PRF 驻留下的一致性判断

实际雷达会切换脉冲重复频率。C&I 干扰如果只针对单 PRF 设计,切到新 PRF 后假目标群可能明显变形。验证方法是在多个 PRF 下分别跑同一组 C&I 参数,记录每次的峰位集合,再计算峰位集合的 Jaccard 相似度:

prf_list = [1000, 1200, 1500]; % 不同 PRF,单位 Hz peak_sets = {}; for prf = prf_list PRI = 1 / prf; % 这里重新生成一个 PRI 长度的回波,加入 C&I 干扰 % 略去与 3.1 相同的信号生成部分,得到 y_env [~, locs] = findpeaks(y_env, 'MinPeakHeight', thr, ... 'MinPeakDistance', 20); peak_sets{end+1} = sort(locs); end inter = length(intersect(peak_sets{1}, peak_sets{2})); union_len = length(union(peak_sets{1}, peak_sets{2})); jaccard = inter / union_len;

Jaccard 相似度高于 0.8,说明干扰样式对不同 PRF 稳定;低于 0.5 则说明重排序列与 PRF 耦合严重,实战中需要把 perm 序列设计成与 PRI 无关的版本,或者采用固定切片宽度但可变重排间隔的策略。

5.3 一个进阶技巧:用复包络斜率快速检查切片拼接处的相位不连续

C&I 干扰在切片拼接处经常出现相位跳变,跳变幅度过大会抬高脉压旁瓣。检查方法不一定要上频谱分析,直接看脉压输出信号的复包络相位差分:

dphase = angle(y(2:end) .* conj(y(1:end-1))); spikes = find(abs(dphase) > 0.3); % 相位差超过 0.3 rad 的位置

spikes出现的位置通常对应切片边界。如果边界数量过多且分布在整个脉冲宽度内,说明需要给每段切片做初始相位补偿,即在重排前把每片的起点相位对齐到同一参考相位。补偿后的干扰信号脉压旁瓣基底一般能降低 6 dB 以上。反过来,如果某些切片在重排后相位连续,脉压峰值会异常突出,这时可以主动引入随机相位扰动来掩盖这种结构,让干扰样式更接近噪声特性。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询