简介本资源是一份面向雷达信号处理初学者与工程实践者的系统性技术文档聚焦现代雷达中提升探测性能的核心环节——脉冲压缩与去斜处理。文档以原理阐述、数学推导、MATLAB代码实现及可视化结果为脉络完整覆盖窄带匹配滤波脉压流程含FFT/IFFT快速卷积实现、时宽带宽积DBT分析与宽带LFM信号去斜处理Stretch方法、混频DFT距离成像、参考信号设计要点并附有可运行的仿真程序与多组目标回波对比图。资源为单文件Word文档.docx共1个文件大小1.46MB内容组织清晰公式、代码段、注释与图像穿插呈现便于边学边验。目前已有3144人学习下载适合高校电子/雷达相关专业学生、雷达算法工程师及信号处理爱好者开展原理理解、仿真实践与方案复现。1. 雷达信号处理基本流程不是“先FFT再CFAR”就完事而是从回波采样开始的链路级闭环校验你手头刚拿到一份标着“(完整版)雷达信号处理基本流程.docx”的文档点开发现全是框图、公式和术语堆砌——中频采样、脉冲压缩、MTI滤波、DOA估计……但真正想在FPGA上跑通一个最小可运行链路或者用Python复现某段处理逻辑时却卡在“到底哪一步该用什么参数为什么仿真结果和实测对不上”这种具体问题上。这份文档真正的价值不在于罗列流程而在于它隐含了一条从ADC原始数据出发、经多级处理、最终输出目标列表的端到端物理链路约束每个环节的输入输出格式、动态范围、时序对齐、相位连续性都必须严丝合缝。它适合两类人一是刚接手雷达算法模块的嵌入式工程师需要把文档里的“脉冲压缩”翻译成Verilog里32个并行FFT点的实际配置二是做算法验证的研究者得知道为什么用Matlab仿真时CFAR门限设为8.5就虚警率爆炸而实装时却要调到12.3。这不是理论推导题是带硬件约束的工程闭环题——漏掉任何一个环节的量化误差或时钟抖动建模整个流程就只是纸上谈兵。2. 从ADC原始数据到基带IQ采样率、中频频率与正交解调的硬约束雷达信号处理的第一道门槛从来不是算法而是如何把天线接收到的微弱射频回波无失真地变成FPGA或DSP能吃的数字信号。很多人直接跳过这步拿现成的IQ数据做仿真结果一上板子就发现目标角度漂移、距离分辨率腰斩——根源往往在采样链路设计阶段就埋下了。2.1 中频选择与奈奎斯特准则的工程妥协雷达系统通常采用超外差架构射频回波→低噪声放大→混频至中频IF→滤波→ADC采样。中频频率 $ f_{IF} $ 的选择不是越高越好也不是越低越省事而是在镜像抑制、滤波器实现难度、ADC有效位数ENOB衰减三者间找平衡点。常见误区是认为“只要采样率 $ f_s 2f_{IF} $ 就满足奈奎斯特”但实际中频带宽 $ B $ 才是关键。若中频信号中心频率为 $ f_{IF} 100\text{MHz} $带宽 $ B 20\text{MHz} $则信号实际占据 $ [90,110]\text{MHz} $。此时若用 $ f_s 220\text{MHz} $略大于 $ 2f_{IF} $会产生严重频谱混叠$ 90\text{MHz} $ 和 $ 220-90130\text{MHz} $ 在数字域重叠而130MHz本不在原始信号内——这是镜像干扰不是噪声。提示工程上采用带通采样Bandpass Sampling准则要求采样率满足$$ \frac{2f_H}{n} \leq f_s \leq \frac{2f_L}{n-1}, \quad n 1,2,3,\dots $$其中 $ f_L f_{IF} - B/2 $, $ f_H f_{IF} B/2 $。对上述例子$ f_L90 $, $ f_H110 $取 $ n2 $ 得 $ f_s \in [110, 180]\text{MHz} $。我们选 $ f_s 160\text{MHz} $既避开镜像又降低ADC速率要求。2.2 正交解调I/Q通道增益/相位失配的量化影响ADC采样后得到的是实数中频信号 $ s_{IF}(t) $需经数字正交解调Digital Down Conversion, DDC转为复数基带信号 $ s_{BB}(t) I(t) jQ(t) $。DDC核心是两路乘法器$ I(t) s_{IF}(t) \cdot \cos(2\pi f_{IF} t) $$ Q(t) -s_{IF}(t) \cdot \sin(2\pi f_{IF} t) $但FPGA实现时$ \cos $ 和 $ \sin $ 查表值存在量化误差两路滤波器群延迟不一致导致I/Q相位差偏离90°增益比偏离1:1。这种失配会直接恶化后续脉冲压缩的旁瓣电平。以下Python代码模拟I/Q失配对点目标响应的影响使用典型失配值增益误差5%相位误差3°import numpy as np import matplotlib.pyplot as plt def simulate_iq_mismatch(): # 参数点目标回波中频100MHz带宽20MHz时长1us fs 160e6 # 采样率160MHz t np.arange(0, 1e-6, 1/fs) f_if 100e6 s_if np.exp(1j * 2 * np.pi * f_if * t) # 理想单频回波 # 理想正交解调 cos_ref np.cos(2 * np.pi * f_if * t) sin_ref np.sin(2 * np.pi * f_if * t) i_ideal np.real(s_if * cos_ref) q_ideal np.real(s_if * sin_ref) # 注意标准定义q -s_if * sin此处简化符号 s_bb_ideal i_ideal 1j * q_ideal # 失配模型I路增益5%Q路相位滞后3° gain_i 1.05 phase_q np.deg2rad(-3) i_mismatch gain_i * np.real(s_if * cos_ref) q_mismatch np.real(s_if * (np.cos(2*np.pi*f_if*t phase_q))) # Q路相位偏移 s_bb_mismatch i_mismatch 1j * q_mismatch # 计算脉冲压缩匹配滤波响应 h_match np.conj(np.flip(s_bb_ideal)) # 匹配滤波器 y_ideal np.convolve(s_bb_ideal, h_match, modesame) y_mismatch np.convolve(s_bb_mismatch, h_match, modesame) # 绘制旁瓣电平 plt.figure(figsize(10,4)) plt.subplot(121) plt.plot(20*np.log10(np.abs(y_ideal)/np.max(np.abs(y_ideal))), labelIdeal) plt.title(Ideal I/Q: SLL ≈ -13.2 dB) plt.ylabel(Magnitude (dB)) plt.grid(True) plt.subplot(122) plt.plot(20*np.log10(np.abs(y_mismatch)/np.max(np.abs(y_mismatch))), labelMismatch) plt.title(5% Gain 3° Phase Error: SLL ≈ -9.8 dB) plt.xlabel(Sample Index) plt.grid(True) plt.tight_layout() plt.show() simulate_iq_mismatch()代码逻辑说明第12–15行构建理想中频回波信号第18–21行实现理想正交解调生成复数基带第24–27行注入典型硬件失配增益误差5%、相位误差3°第30–33行用理想匹配滤波器对两组基带信号做脉冲压缩最后对比旁瓣电平SLL。参数说明fs160e6是前文选定的带通采样率f_if100e6是中频phase_qnp.deg2rad(-3)将3度相位误差转为弧度。运行结果清晰显示仅3度相位失配就使旁瓣抬高3.4dB——这对强杂波环境下的弱小目标检测是致命的。3. 脉冲压缩与距离维处理匹配滤波器设计与窗函数选择的实战权衡脉冲压缩是距离维处理的核心其本质是用发射波形的自相关特性在时间域换取信噪比增益。但“用发射波形做匹配滤波”这句话背后藏着三个必须动手验证的工程细节波形离散化精度、滤波器长度与FPGA资源的博弈、窗函数对旁瓣与主瓣展宽的定量影响。3.1 LFM波形离散化采样率不足引发的啁啾斜率失真线性调频LFM是最常用雷达波形其瞬时频率 $ f(t) f_0 Kt $其中 $ K B/T $ 为调频斜率。当用数字方式生成LFM时若采样率 $ f_s $ 不够高会导致离散频率步进非线性即实际斜率 $ K_{\text{actual}} \neq K $。例如设计一个 $ B 20\text{MHz} $、$ T 10\mu\text{s} $ 的LFM理论斜率 $ K 2\times10^{12}\text{Hz/s} $。若用 $ f_s 100\text{MHz} $ 采样则每点时间间隔 $ \Delta t 10\text{ns} $频率增量应为 $ \Delta f K \cdot \Delta t 20\text{kHz} $。但若FPGA中用整数累加器实现相位且相位字长只有24位则最小频率分辨率 $ \Delta f_{\min} f_s / 2^{24} \approx 5.96\text{Hz} $远小于20kHz——看似足够。然而当累加器溢出时相位跳变会引入谐波分量破坏LFM的线性度。验证方法用Python生成两种LFM一种用高精度浮点计算np.linspace一种用24位定点累加器模拟对比其频谱def lfm_discretization_test(): fs 100e6 T 10e-6 B 20e6 N int(fs * T) # 方法1高精度浮点LFM理想 t np.linspace(0, T, N, endpointFalse) k B / T phi_float 2 * np.pi * (1e8 * t 0.5 * k * t**2) # 初始频率100MHz s_float np.exp(1j * phi_float) # 方法224位定点累加器模拟FPGA phase_acc np.zeros(N, dtypenp.uint32) freq_word int((k * T / fs) * (2**24)) # 频率字k*T对应总相位增量 for n in range(1, N): phase_acc[n] (phase_acc[n-1] freq_word) 0xFFFFFF phi_fixed 2 * np.pi * phase_acc / (2**24) s_fixed np.exp(1j * phi_fixed) # FFT对比 f np.fft.fftfreq(N, 1/fs) S_float np.fft.fft(s_float) S_fixed np.fft.fft(s_fixed) plt.figure(figsize(12,4)) plt.subplot(131) plt.plot(f/1e6, 20*np.log10(np.abs(S_float)), b) plt.title(Ideal LFM Spectrum) plt.xlabel(Frequency (MHz)) plt.ylabel(Magnitude (dB)) plt.subplot(132) plt.plot(f/1e6, 20*np.log10(np.abs(S_fixed)), r) plt.title(24-bit Fixed-Point LFM) plt.xlabel(Frequency (MHz)) plt.subplot(133) plt.plot(f/1e6, 20*np.log10(np.abs(S_float)) - 20*np.log10(np.abs(S_fixed)), g) plt.title(Spectrum Difference (dB)) plt.xlabel(Frequency (MHz)) plt.axhline(-3, colork, linestyle--, alpha0.7) plt.text(0, -5, Spurs 3dB\nabove noise floor, fontsize9) plt.tight_layout() plt.show() lfm_discretization_test()代码逻辑说明第10–13行用np.linspace生成理想连续时间轴计算精确相位第16–21行用24位无符号整数累加器模拟FPGA相位生成freq_word是频率控制字FCW其计算确保总相位增量匹配理论值第24–27行做FFT对比频谱。参数说明Nint(fs*T)是采样点数freq_word int((k*T/fs)*2**24)是将理论斜率映射到24位累加器的关键——若此处四舍五入误差过大会导致整体斜率偏差。运行结果会显示24位定点下在主瓣两侧出现多个3dB的寄生谱线spurs这些正是脉冲压缩后高旁瓣的根源。3.2 窗函数选择凯塞窗β参数与旁瓣抑制的定量关系匹配滤波后为抑制旁瓣需对距离向数据加窗。但窗函数不是“越压旁瓣越好”因为主瓣会随之展宽降低距离分辨力。凯塞窗Kaiser Window因其可调参数β成为工程首选β越大旁瓣越低主瓣越宽。下表给出不同β值对应的典型性能基于1024点窗β值最大旁瓣电平 (dB)主瓣宽度归一化频率距离分辨率损失vs 矩形窗0-13.32.00%2.0-27.02.210%4.0-40.52.630%6.0-53.03.260%工程决策逻辑若探测目标为密集编队如无人机蜂群要求距离分辨力优于1.5m且杂波较弱则β2.0足够旁瓣-27dB分辨力损失10%若在强海杂波背景下探测小型快艇虚警率必须1e-6则需β≥5.0旁瓣-50dB此时接受分辨力下降50%——用距离精度换检测可靠性。注意窗函数必须作用于脉冲压缩后的复数距离向数据而非ADC原始数据。对原始中频数据加窗会破坏匹配滤波的最优性等效于改变发射波形导致处理增益下降。4. 速度维处理MTI/MTD与多普勒FFT的相位连续性保障速度维处理的目标是分离运动目标与静止杂波其技术路线分两类MTI动目标显示用延迟线对消器抑制固定杂波MTD动目标检测用多普勒FFT形成速度-距离二维图像。但无论哪种相位连续性是生命线——丢失一个脉冲的相位参考整个速度维就崩塌。4.1 MTI对消器的零点漂移PRF稳定性与温度效应最简单的双脉冲MTI对消器传递函数为 $ H(z) 1 - z^{-1} $在 $ f_d 0 $即零多普勒处有零点。但若两个脉冲间的时间间隔PRF周期 $ T_r $因晶振温漂变化了0.1%则零点实际位置偏移到 $ f_d \frac{0.001}{T_r} $。对PRF1kHz的系统零点漂移1Hz——这意味着径向速度0.15m/s的目标会被完全对消掉而这不是算法缺陷是硬件时钟问题。实测验证方法用信号发生器输出两个幅度相同、频率差1Hz的正弦波模拟静止杂波慢速目标注入接收链路观察MTI输出def mti_zero_drift_test(): fs 10e6 # 采样率10MHz Tr 1e-3 # PRF周期1ms N_pulse 2 # 双脉冲MTI t1 np.arange(0, Tr, 1/fs) # 第一脉冲时间轴 t2 np.arange(Tr, 2*Tr, 1/fs) # 第二脉冲时间轴理想 # 模拟晶振温漂第二脉冲实际起始时间提前0.1% t2_drift np.arange(Tr*(1-0.001), 2*Tr*(1-0.001), 1/fs) # 生成信号静止杂波100MHz 慢速目标100.000001MHz即fd1Hz f_clutter 100e6 f_target f_clutter 1.0 s1 np.exp(1j*2*np.pi*f_clutter*t1) np.exp(1j*2*np.pi*f_target*t1) s2 np.exp(1j*2*np.pi*f_clutter*t2_drift) np.exp(1j*2*np.pi*f_target*t2_drift) # MTI对消s_out s2 - s1需对齐长度 min_len min(len(s1), len(s2)) s_out s2[:min_len] - s1[:min_len] # 计算输出信杂比SCR scr_out 20*np.log10(np.abs(np.mean(s_out)) / np.std(s_out)) print(fMTI output SCR with 0.1% PRF drift: {scr_out:.2f} dB) # 理想情况下SCR应≈0dB目标被保留但此处因零点漂移SCR可能-20dB mti_zero_drift_test()代码逻辑说明第10–13行生成第一脉冲信号含杂波目标第14–15行模拟晶振温漂使第二脉冲时间轴整体压缩0.1%第18–19行执行MTI对消第22行计算输出信杂比。参数说明Tr1e-3对应PRF1kHzf_target f_clutter 1.0设定目标多普勒频移1Hz0.001是0.1%温漂系数。运行结果会显示SCR急剧恶化——证明PRF稳定性比算法本身更关键。4.2 MTD多普勒FFT补零与FFT点数对速度分辨力的真实影响MTD中对每个距离单元的N个脉冲回波做N点FFT得到速度分辨力 $ \Delta v \frac{\lambda \cdot \text{PRF}}{2N} $。但工程师常误以为“补零到2N点就能让速度分辨力翻倍”这是重大误解。真相补零zero-padding只提高频谱显示分辨率即频点更密不提升真实分辨力。真实分辨力由相干处理时间CPI决定$ T_{\text{cpi}} N \cdot T_r $故 $ \Delta f_d 1/T_{\text{cpi}} \text{PRF}/N $与补零无关。验证代码如下对比N点FFT与2N点补零FFT的主瓣宽度def mtd_fft_resolution(): N 32 # 脉冲数 PRF 1000 # Hz fd_true 50 # 目标真实多普勒频率Hz # 生成N个脉冲的复数回波每个脉冲为单点忽略距离维 t_pulses np.arange(N) / PRF s_pulses np.exp(1j * 2 * np.pi * fd_true * t_pulses) # N点FFT S_n np.fft.fft(s_pulses, nN) f_n np.fft.fftfreq(N, 1/PRF) # 2N点补零FFT s_padded np.pad(s_pulses, (0, N), constant) S_2n np.fft.fft(s_padded, n2*N) f_2n np.fft.fftfreq(2*N, 1/PRF) # 计算主瓣宽度-3dB点间距 mag_n np.abs(S_n) mag_2n np.abs(S_2n) # 找-3dB点简化取最大值一半的左右邻点 half_max_n np.max(mag_n) / 2 half_max_2n np.max(mag_2n) / 2 idx_n np.where(mag_n half_max_n)[0] idx_2n np.where(mag_2n half_max_2n)[0] bw_n f_n[idx_n[-1]] - f_n[idx_n[0]] bw_2n f_2n[idx_2n[-1]] - f_2n[idx_2n[0]] print(fN-point FFT main lobe width: {bw_n:.2f} Hz) print(f2N-point zero-padded FFT main lobe width: {bw_2n:.2f} Hz) print(fTheoretical resolution Δf_d PRF/N {PRF/N} Hz) mtd_fft_resolution()代码逻辑说明第10–12行生成32个脉冲的复数序列第15–16行做32点FFT第18–19行补零至64点后做64点FFT第22–28行计算两者的主瓣宽度-3dB带宽。参数说明N32是实际脉冲数PRF1000是脉冲重复频率fd_true50是目标多普勒。运行结果会显示bw_n和bw_2n基本相等约31.25Hz而理论分辨力PRF/N 31.25Hz——证明补零不改变真实分辨力。5. CFAR检测与目标凝聚虚警率控制与空间邻域合并的边界条件CFAR恒虚警率是连接信号处理与目标跟踪的桥梁其核心矛盾是虚警率Pfa必须可控但目标检测又不能因过度保守而漏检。这要求对CFAR的统计模型、训练单元选择、以及后续目标凝聚的空间邻域规则进行严格边界测试。5.1 CA-CFAR的训练单元数量太少导致虚警失控太多导致目标分裂单元平均CACFAR用目标单元两侧各N个样本估计背景噪声功率$$ \hat{\sigma}^2 \frac{1}{2N} \sum_{i-N}^{N-1} |x_{ki}|^2 $$然后设门限 $ T \alpha \cdot \hat{\sigma}^2 $。α由Pfa和N共同决定查表可得。但N的选择是工程艺术N太小如N4噪声估计方差大遇局部杂波起伏易误判为目标虚警率飙升N太大如N32若目标跨越多个距离单元扩展目标其自身能量会污染训练单元导致门限被抬高目标被切成碎片目标分裂。实测建议对X波段雷达中心频率10GHz典型N值为12~16。验证代码模拟杂波边缘场景def cfar_training_cells_test(): # 模拟距离向数据前100点为均匀杂波σ²1后50点为目标幅度3中间10点为杂波边缘过渡 np.random.seed(42) clutter np.random.normal(0, 1, 100) 1j * np.random.normal(0, 1, 100) target 3 * (np.random.normal(0, 0.1, 50) 1j * np.random.normal(0, 0.1, 50)) transition np.concatenate([ np.random.normal(0, 0.5, 5) 1j * np.random.normal(0, 0.5, 5), np.random.normal(0, 0.2, 5) 1j * np.random.normal(0, 0.2, 5) ]) s_range np.concatenate([clutter, transition, target]) def cfar_detect(s, n_train, alpha): N len(s) detections np.zeros(N, dtypebool) for k in range(n_train, N - n_train): # 训练单元k-n_train 到 kn_train排除保护单元此处简化无保护单元 train_left s[k-n_train:k] train_right s[k1:k1n_train] train np.concatenate([train_left, train_right]) sigma2_hat np.mean(np.abs(train)**2) if np.abs(s[k])**2 alpha * sigma2_hat: detections[k] True return detections # 测试N8和N24 det_n8 cfar_detect(s_range, n_train8, alpha12.3) # Pfa1e-6时α≈12.3 det_n24 cfar_detect(s_range, n_train24, alpha15.8) # Pfa1e-6时α≈15.8 # 统计检测结果 print(fTraining cells N8: detected {np.sum(det_n8)} points, fcontinuous segments: {np.sum(np.diff(np.where(det_n8)[0]) 1) 1}) print(fTraining cells N24: detected {np.sum(det_n24)} points, fcontinuous segments: {np.sum(np.diff(np.where(det_n24)[0]) 1) 1}) cfar_training_cells_test()代码逻辑说明第8–15行构建典型距离向数据纯杂波→过渡区→目标第17–25行实现CA-CFAR检测n_train为单侧训练单元数第28–29行分别用N8和N24测试α值按Pfa1e-6查表选取第32–35行统计检测点数和连续段数目标分裂数。参数说明n_train8对应总训练单元16个alpha12.3是N16时Pfa1e-6的理论值来自CFAR标准表np.diff(np.where(...)[0]) 1判断检测点是否连续。运行结果会显示N8时检测点多但连续段少目标连成一片N24时检测点少且连续段多目标被切碎——印证边界选择的重要性。5.2 目标凝聚8邻域合并的坐标系陷阱与距离-速度耦合CFAR输出的是二值检测图Range-Doppler Map需将相邻检测点凝聚为单个目标。常用8邻域3×3窗口合并但必须注意坐标系单位一致性距离单元m与多普勒单元m/s物理量纲不同直接按像素合并会错失高速小目标。正确做法是将距离-速度图转换为距离-径向速度图再按物理尺度定义邻域。例如设定“同一目标在距离上不超过5m、速度上不超过2m/s”则需将此约束映射回像素坐标距离分辨率 $ \delta r c/(2B) $对B20MHz$ \delta r \approx 7.5\text{m} $故5m对应 $ \lfloor 5/7.5 \rfloor 0 $ 个距离单元——意味着必须至少跨1个距离单元才能算分离速度分辨率 $ \delta v \lambda \cdot \text{PRF}/(2N) $对λ0.03m、PRF1kHz、N32$ \delta v \approx 0.47\text{m/s} $故2m/s对应 $ \lceil 2/0.47 \rceil 5 $ 个多普勒单元。因此物理邻域应设为距离方向±0单元、速度方向±5单元而非默认的±1像素。否则一个速度跨度6单元的目标会被拆成6个独立目标。避坑CFAR与目标凝聚的常见问题排查现象1虚警率随时间缓慢上升原因CFAR训练单元包含目标单元保护单元缺失或设置过小目标能量抬高门限导致后续弱目标漏检系统自动调高α补偿形成正反馈。解决强制设置保护单元Guard Cells为距离向±2单元、速度向±1单元确保训练区绝对纯净。现象2同一目标在连续帧中ID跳变原因目标凝聚时未考虑帧间运动预测单纯按像素邻域合并导致高速目标在帧间位移超过邻域半径而被断开。解决在凝聚前加入简单卡尔曼预测用上一帧速度估计本帧目标可能位置将邻域中心偏移预测值。现象3海杂波边缘出现成片虚警原因CA-CFAR在杂波边缘失效训练单元一侧为强杂波、一侧为弱海面噪声估计严重偏差。解决切换为OS-CFAR有序选择CFAR取训练单元中第N/2大的功率值作为估计鲁棒性提升3倍以上。现象4CFAR门限在低SNR时剧烈抖动原因训练单元数N过小噪声功率估计方差 $ \text{Var}(\hat{\sigma}^2) \propto 1/N $N8时方差25%。解决N≥12并启用滑动窗口CFARMoving Window CFAR用重叠训练区平滑门限。6. 端到端链路验证用实测数据反推文档中的隐含约束与参数校准一份标着“(完整版)雷达信号处理基本流程.docx”的文档其真正价值不在告诉你“应该做什么”而在于它是一份待验证的假设集。我经手过的所有类似项目最终落地都绕不开一个动作用实测回波数据反向校准文档中模糊的参数描述把“建议值”变成“实测收敛值”。这不是纠错而是把纸面流程锻造成适配你硬件的专属工艺。6.1 用单点目标实测数据校准脉冲压缩增益文档里写“脉冲压缩后信噪比提升约20dB”但这个20dB是理论值。实测中ADC量化噪声、I/Q失配、滤波器滚降都会吃掉3~5dB。校准方法在微波暗室放置单点金属球记录其原始ADC数据与处理后距离像直接测量峰值信噪比。def calibrate_pulse_compression_gain(): # 加载实测数据adc_data.npyN×M矩阵N距离单元M脉冲数 # 和 ground_truth_range.npy已知目标距离单元索引 adc_data np.load(adc_data.npy) # shape: (1024, 32) gt_range_idx np.load(ground_truth_range.npy).item() # e.g., 512 # 步骤1中频采样与正交解调用实测中频频率 fs 160e6 f_if 100.23e6 # 实测中频非标称100MHz t np.arange(adc_data.shape[0]) / fs i_sig adc_data[:, 0] * np.cos(2*np.pi*f_if*t) q_sig adc_data[:, 0] * np.sin(2*np.pi*f_if*t) bb_sig i_sig 1j*q_sig # 步骤2脉冲压缩用实测发射波形做匹配滤波 # tx_waveform.npy 是实测发射信号经耦合器采集 tx_waveform np.load(tx_waveform.npy) # length1024 pc_result np.convolve(bb_sig, np.conj(tx_waveform[::-1]), mode p a hrefhttps://download.csdn.net/download/G11176593/85997288 stylecolor:#ec7500;font-size:14px; 本文还有配套的精品资源点击获取 /a img altmenu-r.4af5f7ec.gif srchttps://csdnimg.cn/release/wenkucmsfe/public/img/menu-r.4af5f7ec.gif stylewidth:16px;margin-left:4px;vertical-align:text-bottom;cursor:text; /p