简介这份资源面向雷达信号处理、电子对抗方向的研究人员与研究生提供合成孔径雷达ISRJ干扰的MATLAB实现方案重点覆盖直接转发与间接转发两种基本干扰方式可用于干扰效果仿真验证与算法对比分析。压缩包共2个文件均为.m脚本整体约3KB分别对应直接转发与间接转发两类干扰流程代码结构精简便于直接运行与二次修改。已有68人学习关注属于小众但针对性强的技术资料。读者可借助脚本完成SAR信号的接收、处理与转发模拟观察不同转发策略对成像质量的影响并在此基础上调整延迟、处理参数探索更难被识别的干扰样式。对于需要快速搭建ISRJ仿真链路、理解转发式干扰原理的工程师和学生而言这份代码可作为入门验证与教学演示的起点也便于在现有框架上做改进与创新。1. 从一张被“假目标”淹没的 SAR 图像说起做 SAR 成像的同行大多遇到过这种场景图像上突然多出一片规则排列的亮斑方位向和距离向都呈现出周期性看着像点目标实际却对不上任何真实地物。这类现象背后十有八九是 ISRJInterrupted Sampling Repeater Jamming间歇采样转发干扰在起作用。它的思路并不复杂——干扰机对 SAR 发射的线性调频信号做短时采样再按一定节奏把采样片段转发回去雷达接收端就会在成像结果里形成一串假目标。相比全脉冲转发ISRJ 只需要截获一小段信号就能产生大面积压制效果功率利用率高是当前 SAR 对抗里很受关注的一类干扰样式。这篇笔记围绕“SAR 的 ISRJ 干扰实现基于 MATLAB 编程包括直接转发和间接转发方式”这个主题展开。我会把直接转发和间接转发两种方式的差异讲清楚给出可复现的 MATLAB 仿真链路把脉宽、采样周期、转发延时这些关键参数怎么设、设错了会怎样一并交代。适合已经懂 SAR 基本成像流程、想动手把 ISRJ 干扰效果跑出来的同学也适合做电子对抗仿真、需要快速验证干扰样式的人。整条链路只依赖 MATLAB 基础信号处理工具箱不需要额外的硬件。2. ISRJ 干扰的数学骨架为什么采样转发能造出假目标2.1 间歇采样在时频域到底做了什么要理解 ISRJ得先回到 SAR 发射信号本身。SAR 通常发射线性调频LFM信号单个脉冲内频率随时间线性变化。干扰机如果对这段信号做“采一段、停一段”的间歇采样相当于用一个矩形脉冲串去乘原始信号。时域相乘对应频域卷积矩形脉冲串的频谱是一组间隔为采样频率的离散谱线卷积之后原始 LFM 信号的频谱被“复制”到这些谱线位置附近形成多个子带。这些子带信号被转发回雷达后经过匹配滤波就会在距离向形成多个假目标。假目标的间隔由采样周期决定假目标的幅度包络由采样占空比决定。这就是 ISRJ 能在距离向产生欺骗效果的根本原因。方位向的假目标则来自 SAR 平台运动与转发时序的耦合——干扰机在每个脉冲重复间隔内转发若干次方位向慢时间上就出现了周期性调制成像后表现为方位向的假目标串。直接转发和间接转发的区别核心在于“采样后是否立即转发”。直接转发是采到一段就马上发出去转发信号与原始信号在时间上部分重叠间接转发则是先采一段、存起来等过了一个完整的采样周期再发转发信号与原始信号在时间上错开。这个时序差异会直接影响假目标在距离向的位置和幅度分布。2.2 直接转发与间接转发的时序差异用一个具体的时序来对比。设干扰机采样周期为 T_s采样脉宽为 τ转发延时为 Δt。直接转发方式下干扰机在 [0, τ] 内采样紧接着在 [τ, 2τ] 内转发这段采样。转发信号相对于原始信号有一个 τ 的延时。由于采样和转发交替进行实际进入雷达接收机的干扰信号是原始信号被“切片”后的拼接。间接转发方式下干扰机在 [0, τ] 内采样然后在 [T_s, T_sτ] 内转发。转发信号相对于原始信号延时了 T_s。这个延时更大意味着干扰信号与原始信号在距离向的错位更明显假目标会出现在更远的距离单元上。两种方式在 MATLAB 里的实现差异主要体现在转发时刻的控制上。直接转发的转发时刻紧跟采样结束间接转发的转发时刻要加上一个采样周期的偏移。下面用代码把这两种时序分别实现出来。2.3 用 MATLAB 搭出最小可跑的 ISRJ 信号链先搭一个最小链路生成 LFM 信号做间歇采样按直接转发和间接转发两种方式构造干扰信号最后做匹配滤波看距离向的假目标分布。这段代码不涉及 SAR 方位向处理先把距离向的干扰效果跑通。% ISRJ 距离向干扰最小仿真链路 % 直接转发与间接转发对比 clear; clc; close all; %% 1. 参数设置 c 3e8; % 光速 B 50e6; % 信号带宽 50MHz Tp 10e-6; % 脉宽 10us K B/Tp; % 调频斜率 fs 100e6; % 采样率 100MHz R_max 3000; % 最大作用距离 3km t 0:1/fs:Tp-1/fs; % 脉内时间轴 N length(t); %% 2. 生成 LFM 信号 St exp(1j*pi*K*t.^2); % 发射信号复包络 %% 3. 间歇采样参数 Ts 1e-6; % 采样周期 1us tau 0.5e-6; % 采样脉宽 0.5us duty tau/Ts; % 占空比 50% % 构造采样窗每个 Ts 周期内前 tau 为 1其余为 0 sample_win zeros(1, N); for n 1:N t_mod mod(t(n), Ts); if t_mod tau sample_win(n) 1; end end %% 4. 直接转发采样后立即转发 % 采样信号 S_sample St .* sample_win; % 直接转发将采样信号延时 tau 后叠加 delay_direct round(tau*fs); S_direct [zeros(1, delay_direct), S_sample(1:end-delay_direct)]; %% 5. 间接转发采样后延时一个采样周期再转发 delay_indirect round(Ts*fs); S_indirect [zeros(1, delay_indirect), S_sample(1:end-delay_indirect)]; %% 6. 匹配滤波 mf conj(fliplr(St)); % 匹配滤波器 % 直接转发干扰匹配滤波输出 y_direct conv(S_direct, mf, same); % 间接转发干扰匹配滤波输出 y_indirect conv(S_indirect, mf, same); % 原始信号匹配滤波输出作为参考 y_ref conv(St, mf, same); %% 7. 距离向归一化幅度 r_axis (0:N-1)/fs * c / 2; % 距离轴 figure; subplot(3,1,1); plot(r_axis, 20*log10(abs(y_ref)/max(abs(y_ref)))); title(原始信号匹配滤波输出); xlabel(距离(m)); ylabel(幅度(dB)); grid on; subplot(3,1,2); plot(r_axis, 20*log10(abs(y_direct)/max(abs(y_direct)))); title(直接转发 ISRJ 匹配滤波输出); xlabel(距离(m)); ylabel(幅度(dB)); grid on; subplot(3,1,3); plot(r_axis, 20*log10(abs(y_indirect)/max(abs(y_indirect)))); title(间接转发 ISRJ 匹配滤波输出); xlabel(距离(m)); ylabel(幅度(dB)); grid on;这段代码的逻辑分四步。第一步生成 LFM 信号K B/Tp是调频斜率t是脉内时间轴。第二步构造间歇采样窗sample_win用mod(t(n), Ts) tau判断当前时刻是否落在采样窗口内是则置 1否则置 0。第三步分别实现直接转发和间接转发直接转发把采样信号整体延时tau间接转发延时Ts。第四步用匹配滤波器mf conj(fliplr(St))做脉冲压缩观察距离向的假目标分布。参数说明Ts决定假目标的距离间隔ΔR c*Ts/2。当Ts 1us时假目标间隔约 150 米。tau决定假目标的幅度包络占空比duty tau/Ts越大主假目标幅度越高但假目标数量会减少。B和Tp决定距离分辨率B越大分辨率越高假目标在距离向分得越开。跑完这段代码你会看到直接转发和间接转发的匹配滤波输出在假目标位置上有明显差异。直接转发的假目标离主目标更近间接转发的假目标整体后移了一个采样周期对应的距离。这个差异就是两种转发方式最直观的区别。3. 把 ISRJ 放进 SAR 成像链路方位向假目标怎么出来的3.1 SAR 回波模型与干扰信号叠加距离向跑通之后下一步是把 ISRJ 放进完整的 SAR 回波模型里。SAR 回波可以看成发射信号经过目标散射、距离延时、方位向多普勒调制后的结果。干扰信号则是在雷达接收端叠加进来的它不经过真实目标的散射路径而是干扰机对发射信号的采样转发。在 MATLAB 里我一般用二维矩阵来表示 SAR 回波数据行对应距离向快时间列对应方位向慢时间。每个方位时刻雷达发射一个脉冲接收到的回波按距离门排列。干扰信号在每个方位时刻都要重新计算因为干扰机的采样时序与雷达脉冲是同步的。直接转发和间接转发在 SAR 链路里的差异主要体现在方位向的调制上。直接转发的转发延时固定为tau方位向的调制周期与采样周期一致间接转发的转发延时为Ts方位向的调制周期会发生变化。这个差异会导致方位向假目标的间隔和幅度分布不同。3.2 直接转发在 SAR 链路里的实现步骤直接转发的实现步骤可以拆成四步。第一步生成 SAR 原始回波数据包括距离向 LFM 和方位向多普勒相位。第二步对每个方位时刻的回波做间歇采样得到采样信号。第三步把采样信号延时tau后叠加到原始回波上。第四步做距离向匹配滤波和方位向压缩观察成像结果。% SAR ISRJ 直接转发干扰仿真 % 在距离向 ISRJ 基础上加入方位向处理 clear; clc; close all; %% 1. SAR 参数 c 3e8; B 50e6; % 带宽 Tp 10e-6; % 脉宽 K B/Tp; % 调频斜率 fs 100e6; % 距离向采样率 PRF 1000; % 脉冲重复频率 V 150; % 平台速度 m/s R0 10000; % 中心斜距 10km Na 256; % 方位向采样点数 Nr 1024; % 距离向采样点数 % 时间轴 tr 0:1/fs:Tp-1/fs; % 距离向快时间 ta (0:Na-1)/PRF; % 方位向慢时间 %% 2. 生成 SAR 原始回波 % 距离向 LFM St exp(1j*pi*K*tr.^2); % 方位向多普勒相位 lambda c/B; % 波长近似 Ka 2*V^2/(lambda*R0); % 方位向调频斜率 S_echo zeros(Na, Nr); for n 1:Na phi_az exp(-1j*pi*Ka*(ta(n))^2); S_echo(n, :) phi_az * St; end %% 3. 间歇采样参数 Ts 1e-6; tau 0.5e-6; sample_win zeros(1, Nr); for n 1:Nr t_mod mod(tr(n), Ts); if t_mod tau sample_win(n) 1; end end %% 4. 直接转发干扰 S_jam_direct zeros(Na, Nr); delay_direct round(tau*fs); for n 1:Na S_sample S_echo(n, :) .* sample_win; S_jam_direct(n, :) [zeros(1, delay_direct), S_sample(1:end-delay_direct)]; end % 干扰叠加到回波 S_total_direct S_echo 0.5 * S_jam_direct; % 干信比 0.5 %% 5. 距离向匹配滤波 mf conj(fliplr(St)); S_rc_direct zeros(Na, Nr); for n 1:Na S_rc_direct(n, :) conv(S_total_direct(n, :), mf, same); end %% 6. 方位向压缩 S_image_direct zeros(Na, Nr); for m 1:Nr S_image_direct(:, m) fftshift(fft(S_rc_direct(:, m))); end %% 7. 成像结果 figure; imagesc(20*log10(abs(S_image_direct)/max(abs(S_image_direct(:))))); colormap(jet); colorbar; title(直接转发 ISRJ 干扰 SAR 成像结果); xlabel(距离向); ylabel(方位向);这段代码在距离向 ISRJ 的基础上增加了方位向处理。S_echo是原始 SAR 回波每个方位时刻的回波都乘以方位向多普勒相位phi_az。S_jam_direct是直接转发干扰信号对每个方位时刻的回波做间歇采样后延时tau叠加。S_total_direct是回波与干扰的叠加干信比设为 0.5。距离向匹配滤波后再做方位向 FFT 压缩得到二维成像结果。参数说明PRF决定方位向采样率Na决定方位向点数V和R0决定方位向调频斜率Ka。Ts和tau与距离向仿真一致。干信比0.5可以调整值越大干扰越强但实际中受干扰机功率限制。3.3 间接转发在 SAR 链路里的实现步骤间接转发的实现与直接转发类似区别在于转发延时从tau改为Ts。这个改动看似很小但成像结果里假目标的位置会整体偏移。间接转发的假目标在距离向会出现在更远的位置方位向的假目标间隔也会因为转发时序的变化而改变。% SAR ISRJ 间接转发干扰仿真 % 与直接转发对比仅转发延时不同 %% 1. 复用直接转发的参数和回波 % 假设 S_echo, sample_win, mf, Ka, ta 等已定义 %% 2. 间接转发干扰 S_jam_indirect zeros(Na, Nr); delay_indirect round(Ts*fs); % 延时一个采样周期 for n 1:Na S_sample S_echo(n, :) .* sample_win; S_jam_indirect(n, :) [zeros(1, delay_indirect), S_sample(1:end-delay_indirect)]; end S_total_indirect S_echo 0.5 * S_jam_indirect; %% 3. 距离向匹配滤波 S_rc_indirect zeros(Na, Nr); for n 1:Na S_rc_indirect(n, :) conv(S_total_indirect(n, :), mf, same); end %% 4. 方位向压缩 S_image_indirect zeros(Na, Nr); for m 1:Nr S_image_indirect(:, m) fftshift(fft(S_rc_indirect(:, m))); end %% 5. 对比成像结果 figure; subplot(1,2,1); imagesc(20*log10(abs(S_image_direct)/max(abs(S_image_direct(:))))); colormap(jet); colorbar; title(直接转发); xlabel(距离向); ylabel(方位向); subplot(1,2,2); imagesc(20*log10(abs(S_image_indirect)/max(abs(S_image_indirect(:))))); colormap(jet); colorbar; title(间接转发); xlabel(距离向); ylabel(方位向);间接转发的代码改动只有一行delay_indirect round(Ts*fs)。但成像结果里间接转发的假目标在距离向整体后移了c*Ts/2对应的距离单元。当Ts 1us时后移约 150 米。这个偏移量在 SAR 图像上是很明显的实际对抗中可以利用这个特性来调整假目标的位置。两种转发方式的对比可以用一个表格来总结。对比项直接转发间接转发转发延时τ采样脉宽Ts采样周期假目标距离偏移较小较大约 c*Ts/2假目标幅度与占空比相关与占空比相关但包络不同实现复杂度低略高需要存储采样片段适用场景近距离欺骗远距离欺骗、多假目标4. 参数怎么调采样周期、占空比与干信比的联合影响4.1 采样周期 Ts 决定假目标间隔采样周期Ts是 ISRJ 里最关键的参数它直接决定假目标在距离向的间隔。假目标间隔ΔR c*Ts/2。Ts越大假目标间隔越远但假目标数量会减少Ts越小假目标越密集但可能超出雷达的距离分辨单元导致假目标混叠。在实际仿真中我一般先根据雷达的距离分辨率Δr c/(2B)来确定Ts的合理范围。如果Ts太小假目标间隔小于距离分辨率假目标会连成一片看不出明显的欺骗效果。如果Ts太大假目标间隔太远可能超出雷达的接收窗口。一个经验法则是让Ts对应的距离间隔在 3 到 10 倍距离分辨率之间。% 不同 Ts 下的假目标间隔对比 B 50e6; c 3e8; delta_r c/(2*B); % 距离分辨率 3m Ts_list [0.2e-6, 0.5e-6, 1e-6, 2e-6]; for i 1:length(Ts_list) delta_R c*Ts_list(i)/2; fprintf(Ts %.1f us, 假目标间隔 %.1f m, 距离分辨率 %.1f m, 比值 %.1f\n, ... Ts_list(i)*1e6, delta_R, delta_r, delta_R/delta_r); end这段代码输出不同Ts下的假目标间隔与距离分辨率的比值。当Ts 0.2us时假目标间隔约 30 米是距离分辨率的 10 倍假目标分得很开。当Ts 2us时假目标间隔约 300 米假目标数量明显减少。实际选择时要根据干扰目标的大小和雷达参数来权衡。4.2 占空比 duty 决定假目标幅度包络占空比duty tau/Ts决定假目标的幅度包络。占空比越大采样窗口越宽转发信号的能量越集中主假目标的幅度越高。但占空比太大间歇采样的“间歇”特性就不明显了干扰效果会退化成全脉冲转发。在 MATLAB 里可以通过改变tau来调整占空比观察假目标幅度的变化。我一般会跑一组duty从 0.1 到 0.9 的对比看假目标幅度包络怎么变。% 不同占空比下的假目标幅度对比 Ts 1e-6; duty_list [0.1, 0.3, 0.5, 0.7, 0.9]; for i 1:length(duty_list) tau duty_list(i) * Ts; % 构造采样窗 sample_win zeros(1, N); for n 1:N if mod(t(n), Ts) tau sample_win(n) 1; end end % 直接转发 S_sample St .* sample_win; delay_direct round(tau*fs); S_direct [zeros(1, delay_direct), S_sample(1:end-delay_direct)]; y_direct conv(S_direct, mf, same); % 记录主假目标幅度 [~, idx] max(abs(y_direct)); fprintf(duty %.1f, 主假目标幅度 %.2f dB\n, ... duty_list(i), 20*log10(abs(y_direct(idx))/max(abs(y_ref)))); end这段代码遍历不同占空比记录主假目标的幅度。占空比从 0.1 增加到 0.9主假目标幅度会先增后减存在一个最优占空比。实际中这个最优值通常在 0.3 到 0.5 之间具体取决于雷达参数和干扰机功率。4.3 干信比 JSR 对成像结果的影响干信比JSR是干扰信号与回波信号的功率比。在 MATLAB 仿真里JSR 通过叠加系数来控制。JSR 太低假目标被真实目标淹没JSR 太高假目标幅度超过真实目标但实际中受干扰机功率限制不可能无限高。我一般会跑一组 JSR 从 -10dB 到 20dB 的对比看假目标在成像结果里的可见度。JSR 在 0dB 到 10dB 之间时假目标已经能明显看到但不会完全压制真实目标。JSR 超过 15dB假目标会占据主导真实目标可能被淹没。% 不同 JSR 下的成像结果对比 JSR_dB [-10, 0, 10, 20]; for i 1:length(JSR_dB) JSR_linear 10^(JSR_dB(i)/20); S_total S_echo JSR_linear * S_jam_direct; % 后续匹配滤波和方位向压缩 % ... fprintf(JSR %d dB, 干扰信号幅度系数 %.2f\n, JSR_dB(i), JSR_linear); end这段代码展示了 JSR 与叠加系数的换算关系。JSR_linear 10^(JSR_dB/20)是幅度系数因为功率比是幅度比的平方。实际仿真中JSR 的设置要结合雷达方程和干扰方程来估算不能随意设。5. 避坑与排查ISRJ 仿真里最容易翻车的五个地方5.1 采样窗对齐错误导致假目标消失现象跑完仿真成像结果里看不到任何假目标和原始回波几乎一样。原因采样窗sample_win的构造有问题。最常见的是mod(t(n), Ts)的基准不对或者t的起始时刻不是 0导致采样窗全为 0 或全为 1。如果采样窗全为 0干扰信号为零如果全为 1退化成全脉冲转发假目标特征消失。解决在构造采样窗后用sum(sample_win)检查非零元素个数。正常情况下非零元素占比应该接近占空比duty。如果sum(sample_win)等于 0 或等于N说明采样窗构造有误。另外检查t的起始时刻确保t(1) 0。5.2 转发延时取整误差导致假目标位置偏移现象假目标的位置和理论计算对不上偏移了几个距离单元。原因delay_direct round(tau*fs)和delay_indirect round(Ts*fs)做了取整。当tau*fs不是整数时取整会引入误差。fs 100MHztau 0.5ustau*fs 50是整数没问题。但如果tau 0.55ustau*fs 55还是整数。如果fs不是tau的整数倍取整误差就会显现。解决尽量让fs是1/tau的整数倍或者用插值来精确控制延时。在 MATLAB 里可以用interp1做分数延时避免取整误差。如果对精度要求不高取整误差在几个距离单元内可以接受。5.3 匹配滤波器共轭翻转方向搞反现象匹配滤波输出没有峰值或者峰值位置不对。原因匹配滤波器的构造mf conj(fliplr(St))里fliplr和conj的顺序不能反。如果先conj再fliplr结果是一样的但如果是fliplr(conj(St))也是一样的。真正容易错的是忘记conj或者fliplr用成了flipud。另外conv的same选项会让输出长度和输入一致但峰值位置会偏移。解决检查mf的构造确保是conj(fliplr(St))。用conv(St, mf, same)做自匹配看峰值是否在中心位置。如果峰值偏移说明same选项的截取方式有问题可以改用full然后手动截取。5.4 方位向 FFT 压缩忘记 fftshift现象成像结果里方位向的假目标出现在边缘而不是中心。原因方位向压缩用fft后没有做fftshift。fft的输出零频在第一个点fftshift把零频移到中心。如果不做fftshift图像会看起来“卷绕”了假目标位置不对。解决在fft后加fftshift即S_image(:, m) fftshift(fft(S_rc(:, m)))。另外检查方位向时间轴ta是否从 0 开始如果不是需要在fft前做相位补偿。5.5 干信比设置过大导致数值溢出现象成像结果全白或全黑看不出任何结构。原因JSR 设置过大比如JSR_linear 1000叠加后信号幅度远超原始回波imagesc的归一化把真实目标压没了。另外如果 JSR 用 dB 表示换算时用了10^(JSR_dB/10)而不是10^(JSR_dB/20)幅度会差一个平方根。解决JSR 的幅度系数用10^(JSR_dB/20)功率系数用10^(JSR_dB/10)。在叠加前用max(abs(S_total(:)))检查信号幅度确保没有超出double的范围。如果溢出降低 JSR 或做归一化。6. 进阶技巧用分数延时和多干扰机协同提升假目标逼真度6.1 分数延时让假目标位置连续可调前面的仿真里转发延时都是整数个采样点假目标位置只能落在离散的距离单元上。实际对抗中假目标位置需要连续可调这时候就要用分数延时。MATLAB 里可以用interp1做线性插值或者用filtfilt做分数延时滤波。% 分数延时实现 function y frac_delay(x, delay_samples) % x: 输入信号 % delay_samples: 延时采样点数可以是小数 N length(x); n 1:N; n_delayed n - delay_samples; y interp1(n, x, n_delayed, linear, 0); end这个函数用线性插值实现分数延时。delay_samples可以是小数比如50.3表示延时 50.3 个采样点。插值后假目标位置可以连续调整不再受采样点间隔限制。实际使用时把delay_direct round(tau*fs)换成delay_direct tau*fs然后调用frac_delay。6.2 多干扰机协同产生二维假目标阵列单台干扰机的 ISRJ 只能在距离向产生假目标方位向的假目标靠 SAR 平台运动与转发时序的耦合控制精度有限。如果要产生二维假目标阵列可以用多台干扰机协同。每台干扰机设置不同的采样周期和转发延时叠加后就能在距离向和方位向同时形成假目标。% 多干扰机协同 num_jammers 3; Ts_list [0.8e-6, 1.0e-6, 1.2e-6]; tau_list [0.3e-6, 0.5e-6, 0.4e-6]; S_jam_multi zeros(Na, Nr); for j 1:num_jammers % 每台干扰机独立构造采样窗和转发信号 sample_win_j zeros(1, Nr); for n 1:Nr if mod(tr(n), Ts_list(j)) tau_list(j) sample_win_j(n) 1; end end for n 1:Na S_sample_j S_echo(n, :) .* sample_win_j; delay_j round(tau_list(j)*fs); S_jam_multi(n, :) S_jam_multi(n, :) ... [zeros(1, delay_j), S_sample_j(1:end-delay_j)]; end end S_total_multi S_echo 0.3 * S_jam_multi;这段代码模拟三台干扰机协同。每台干扰机的Ts和tau不同叠加后假目标在距离向和方位向的分布更复杂。实际中多干扰机协同需要解决同步问题仿真里可以忽略同步误差但实际部署时要考虑。6.3 用成像结果反推干扰参数仿真跑通后一个实用的技巧是从成像结果反推干扰参数。假目标的距离间隔对应Ts假目标的幅度包络对应duty假目标的方位向间隔对应转发时序的方位向调制周期。通过测量这些量可以验证仿真参数设置是否正确也可以用于干扰效果评估。我一般会在成像结果里取一个距离向剖面用findpeaks找假目标峰值位置然后计算间隔。% 从成像结果反推 Ts profile 20*log10(abs(S_image_direct(:, round(Nr/2)))); [pks, locs] findpeaks(profile, MinPeakHeight, -20); if length(locs) 2 delta_idx mean(diff(locs)); Ts_est delta_idx / fs; fprintf(估计采样周期 Ts %.2f us\n, Ts_est*1e6); end这段代码从距离向剖面提取假目标峰值计算平均间隔反推Ts。实际使用时要注意峰值检测的门限设置门限太低会引入噪声峰值门限太高会漏掉弱假目标。6.4 我踩过的坑和固定习惯做 ISRJ 仿真这几年最大的教训是参数之间的耦合比想象中强。Ts、tau、JSR这三个参数不是独立的改一个往往要重新调另外两个。我现在的习惯是先固定Ts和duty跑一组JSR扫描找到假目标可见度合适的JSR然后固定JSR跑一组Ts扫描看假目标间隔是否满足需求最后微调duty优化假目标幅度包络。这个顺序能避免反复调参的玄学。另一个习惯是每次仿真后保存参数和成像结果用save(isrj_result.mat, S_image_direct, Ts, tau, JSR)存下来。后面对比不同参数时直接加载.mat文件不用重新跑。这个习惯帮我省了很多重复计算的时间。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?