
简介针对雷达通信一体化波形设计中的模糊函数对比需求这份MATLAB代码包给出了OFDM与OCDM两种调制方式的仿真对比实现。资源面向从事一体化波形设计、信号处理方向研究的高校学生与科研人员尤其适合需要快速评估不同波形距离-多普勒二维特性的使用者。包体共含3个m文件整个压缩包仅3KB均为轻量级MATLAB脚本不依赖额外数据文件可直接运行或嵌入自身模型。主绘图脚本负责生成OFDM与OCDM的模糊函数对比图两个辅助函数分别计算均值模糊函数与单符号模糊函数能够从统计平均和单码元两个层面分析分辨力、旁瓣电平及干扰抑制效果。当前已有822人学习下载配套脚本保留了清晰的注释与函数边界便于在此基础上调整子载波数、符号参数或扩展其他调制方式可辅助论文仿真、课程实验或工程预研。1. 模糊函数是波形设计的检票口OFDM与OCDM各走各的门雷达通信一体化波形设计里模糊函数不是锦上添花的分析工具而是决定探测策略的第一道闸门。OFDM作为成熟基线模糊函数在多普勒维的周期性副本和时延旁瓣结构已经被反复研究真正有争议的是OCDM它用chirp基替换了正弦基模糊函数从“图钉”变成带斜脊的“山脊”。有人据此认为OCDM全面优于OFDM有人则在时延多普勒图上把脊线误读成伪峰。这篇笔记用MATLAB把两种波形的模糊函数算出来量化对比时延分辨率、多普勒容限与旁瓣结构并给出能直接改参数跑的脚本适合正在做一体化波形选型或正在入门雷达信号处理的工程师对照复现。2. 信号模型与模糊函数推导从OFDM到OCDM的数学起点2.1 模糊函数定义时延多普勒平面上比什么模糊函数反映发射波形在时延τ和多普勒ν下的自相关响应定义为χ(τ,ν) ∫ s(t) · s*(t-τ) · e^{−j2πνt} dt物理含义是假设目标回波相对发射波形存在时延τ和多普勒ν用发射波形与该回波做匹配滤波输出能量随(τ,ν)的分布。主峰越尖锐时延和多普勒的联合分辨能力越好旁瓣越低弱目标越不容易被强目标旁瓣淹没。雷达里说的距离分辨率和速度分辨率分别对应τ轴和ν轴的主瓣宽度。离散化时对基带信号s[n]按采样周期Ts采样模糊函数变成二维序列χ[m,p] Σ_n s[n] · s*[n-m] · e^{−j2πpn/N}其中m对应时延采样点数p对应多普勒频点索引。这个离散形式是第3章MATLAB代码的直接依据。需要提醒的是不同文献对模糊函数有共轭位置和指数正负号的约定差异MATLAB实现内部保持一致即可比较两种波形时约定不同只会整体平移不改变旁瓣结构和主峰宽度的相对结论。2.2 OFDM的基带模型与多普勒敏感点OFDM基带信号在单个符号内可以写成s(t) Σ_{k0}^{N-1} d[k] · e^{j2πkΔf t}, 0 ≤ t T_sym其中N是子载波数Δf 1/T_sym是子载波间隔d[k]是第k个子载波上的调制符号。理想情况下子载波严格正交接收端做FFT就能分离数据。在模糊函数层面矩形脉冲OFDM的时延响应主瓣宽度约为1/BBNΔf为总带宽多普勒相关性由一个与符号时长T_sym相关的sinc类因子控制主瓣宽度约为1/T_sym量级。这里有个容易被忽略的点OFDM的多普勒响应并不是单调衰减的。符号持续时间内子载波相位按kΔf t旋转多普勒ν带来的相位旋转e^{−j2πνt}在部分ν值处与子载波间隔对齐相关性回升形成多普勒域间隔为Δf的周期结构。这个效应在OFDM雷达里表现为测速模糊的隐患也是OFDM同步设计中安排参考信号和导频时要考虑的背景。另一层是单个符号内的随机数据会把确定性旁瓣打散时延维旁瓣呈现随数据起伏的形态这在对比时需要多次取随机种子做平均。2.3 OCDM用正交chirp基替换正弦基OCDMOrthogonal Chirp Division Multiplexing的核心是发射一组在带宽内扫频且相互正交的chirp信号。标准做法通过离散仿射傅里叶变换DAFT构造数据经DAFT变换到时域接收端用逆变换还原。为了让模糊函数对比能直观映射到时频结构这里采用一个数学上等价的简化模型s[n] (1/√N) Σ_{k0}^{N-1} d[k] · e^{j2πkn/N} · e^{jπn²/N}前半部分就是OFDM的IFFT后半部分是二次相位等价于对每个时域采样点附加线性调频因子。由于二次相位是公共项基函数之间维持正交性因此它仍然是N路正交波形但每一路不再是固定频率谱线而是一条瞬时频率随时间线性变化的chirp。时频图上的差别直接决定了模糊函数形态OFDM的能量分布在矩形时频格点上沿频率轴均匀铺开OCDM的每个基函数在符号时间内扫过整个带宽能量沿对角线方向倾斜。于是多普勒ν在匹配滤波中产生的相位旋转被chirp斜率映射成时延方向的偏移模糊函数呈现斜脊而不是尖峰。雷达通信一体化里OCDM的脊线结构让多普勒估计摆脱OFDM符号级模糊的限制但也意味着目标回波必须在时延多普勒平面上做二维联合解算只切一维剖面做估计会得到偏置的距离。3. MATLAB实现把模糊函数算出来的最小代码3.1 信号生成OFDM与OCDM的MATLAB写法先用同一份随机QPSK数据生成两种波形保证对比公平。参数取N256个子载波OCDM里对应码片数带宽B100MHz符号时长T_sym2.56μs。% 公共参数 N 256; % OFDM子载波数 / OCDM码片数 B 100e6; % 占用带宽 (Hz) Ts 1/B; % 采样周期 (s) T_sym N * Ts; % 单符号时长 (s) rng(1); % 固定随机种子保证结果可复现 d exp(1j * randi(4, N, 1) * pi / 2); % 随机QPSK符号 % OFDM 基带信号IFFT 调制 s_ofdm ifft(d); % OCDM 基带信号IFFT 后乘 chirp 二次相位教学简化模型 n_axis (0:N-1).; s_ocdm ifft(d) .* exp(1j * pi * n_axis.^2 / N);代码说明randi(4,N,1)*pi/2生成0、π/2、π、3π/2四个相位作为QPSK星座点ifft(d)完成OFDM调制把频域符号变成时域采样点。OCDM的简化写在时域采样点上乘exp(1j*pi*n_axis.^2/N)等效于给每个采样点增加递增调频斜率。严格做DAFT域调制需要先对数据做WHT或对应酉变换但就模糊函数对比这个目标而言关键是保持相同的能量谱和正交基结构因此这样简化即可。如果想在Simulink里搭OFDM调制解调模块验证链路可以先在这个脚本里把波形输出存成.mat文件再从Simulink的From Workspace模块导入能省掉重复生成信号的环节。3.2 二维模糊函数计算函数function chi af_2d(s, tau_max, fd_vec, Ts) % af_2d 计算基带信号s的二维模糊函数 % s : 复基带信号 (Ns x 1) % tau_max : 最大时延单位采样点数 % fd_vec : 多普勒频率列表 (1 x Nf)单位Hz % Ts : 采样周期 (s) Ns length(s); Nf length(fd_vec); chi zeros(tau_max 1, Nf); n (0:Ns-1).; for tau 0:tau_max if tau 0 s_delayed s; else % s(t - tau)右移tau个采样点前面补零 s_delayed [zeros(tau, 1); s(1:end-tau)]; end % 对每个多普勒频点求相关能量 % exp(-1j*2*pi*fd_vec.*n*Ts) 产生 (Ns x Nf) 多普勒旋转矩阵 p sum(conj(s_delayed) .* s .* ... exp(-1j * 2 * pi * (fd_vec .* n) * Ts), 1); chi(tau1, :) abs(p).^2; end % 归一化到最大峰值 chi chi / max(chi(:)); end逻辑说明外层循环遍历时延tau每行对应一个时延剖面的全部多普勒响应。s_delayed是在时间轴上右移的信号conj(s_delayed).*s完成共轭相关对应2.1节离散公式中s[n]·s*[n-m]的实现。多普勒维用一次隐式扩展完成fd_vec是1×Nf向量n是Ns×1列向量MATLAB从R2016b起自动广播成Ns×Nf矩阵第k列就是第k个多普勒频点的旋转因子这样把内层多普勒循环向量化比三重循环快一个数量级。输出取abs(p).^2得到能量而不是幅度雷达指标里主瓣旁瓣对比通常看能量。tau_max不建议超过Ns/4否则边缘补零过多会让旁瓣水平被人为抬高破坏对比口径。3.3 运行与可视化tau_max 40; % 最大观察时延 40 个采样点 fd_max 0.8 / T_sym; % 观察范围 ±0.8倍子载波间隔 fd_vec linspace(-fd_max, fd_max, 201); chi_ofdm af_2d(s_ofdm, tau_max, fd_vec, Ts); chi_ocdm af_2d(s_ocdm, tau_max, fd_vec, Ts); figure(Color, w, Position, [100 100 1100 420]); subplot(1,2,1); imagesc(fd_vec*1e-6, (0:tau_max)*Ts*1e9, chi_ofdm); axis xy; colorbar; xlabel(多普勒频移 (MHz)); ylabel(时延 (ns)); title(OFDM 模糊函数); subplot(1,2,2); imagesc(fd_vec*1e-6, (0:tau_max)*Ts*1e9, chi_ocdm); axis xy; colorbar; xlabel(多普勒频移 (MHz)); ylabel(时延 (ns)); title(OCDM 模糊函数);运行后两幅图最直观的差别是OFDM主峰两侧多普勒方向有周期性副峰OCDM则呈现一条沿对角线移动的脊线。纵轴单位用(0:tau_max)*Ts*1e9把采样点换算成纳秒横轴用MHz读图。注意OFDM周期性副峰横坐标落在±Δf±1/T_sym附近OCDM的脊线斜率与chirp的调频斜率成反比带宽越大脊越平缓。如果fd_vec分辨率不够峰值位置会跳变加密到401点会更平滑内存吃紧时优先减小tau_max而不是压缩多普勒采样点数。4. 仿真对比与参数敏感性子载波数、带宽和多普勒范围怎么改4.1 基线参数与对比口径参数OFDMOCDM说明子载波/码片数 N256256保持数据速率相同带宽 B100 MHz100 MHz时延分辨率一致采样周期 Ts10 ns10 ns由带宽决定符号时长 T_sym2.56 μs2.56 μs相同帧开销调制方式QPSKQPSK相同星座与功率观察多普勒范围±0.8·Δf±0.8·ΔfΔf 1/T_sym这种等带宽、等符号时长的对比口径很关键。如果只固定采样率而不固定符号时长OFDM和OCDM的峰脊会落在完全不同的坐标尺度上后续结论全部需要重写。另一个要提前确认的是循环前缀CP的取舍。这里没有加CP真实OFDM雷达符号通常带CPCP会把时延小于零区域的相关抬高并在τCP处形成额外台阶OCDM的chirp跨符号特性决定了它偏向无CP或短CP设计。做工程选型时建议把CP长度设0、短、长三种逐一跑一遍再决定基带帧结构。4.2 读图峰值、脊线与旁瓣OFDM的主峰在(τ0, ν0)处沿时延轴第一旁瓣能量约−13dB量级这个旁瓣是矩形脉冲时域窗的sinc结构换窗函数可以压低。多普勒方向在ν±Δf处出现明显的能量回升在4.1表格对应的窗口内直接表现为与主峰接近的凸起。实际测速时如果目标多普勒落在Δf整数倍附近会出现速度模糊这是OFDM雷达通信一体化里常被诟病的一点也是做OFDM同步和速度解模糊算法时绕不开的背景。OCDM的模糊函数没有这种周期性凸起代价是主峰能量沿脊线方向泄漏。脊线存在使得时延轴第一旁瓣峰值位置相对OFDM发生偏移单看一维剖面会觉得OCDM旁瓣更高。正确做法是以二维检测门限为口径把脊线区域当作已知先验参与检测而不是直接对比某个一维剖面。这里也建议对同一组参数跑10次随机数据取平均消除QPSK随机性带来的旁瓣起伏获得统计意义上稳定的模糊函数。4.3 参数怎么改结论才不变先看带宽。B从100MHz改成40MHz而保持N256不变符号时长从2.56μs变到6.4μs时延分辨率从10ns劣化到25nsOFDM多普勒副峰间距从390.625kHz缩小到156.25kHz。同时OCDM脊线斜率变陡时延多普勒耦合在窄带下更严重。改带宽时务必同步调整fd_max 0.8/T_sym的取值否则观察窗口与子载波间隔的比值改变两幅图不可比。再看子载波数。把N降为64时符号时长缩短时延分辨率不变但OFDM多普勒主瓣变宽周期副峰间距增大OCDM码片数不足时脊线不再是平滑连续带而是出现离散栅瓣这是因为基函数个数太少、时频覆盖出现空洞。把OCDM的N降到32以下再对比能看到模糊函数的周期性结构开始显现此时OCDM相对OFDM的优势基本消失。这个临界点可作为选型边界记录具体数值随chirp的调频斜率变化。多普勒观察范围也直接影响结论。fd_vec宽度超过±Δf之后OFDM在±Δf处出现与主峰等高的副本OCDM的脊则折回观察窗另一侧。这不是仿真错误而是数字模糊函数的周期延拓属性。遇到这类现象先把范围收窄到±0.5Δf确认主峰位置后再扩窗避免把周期副本误判成真实目标。配合MATLAB的findpeaks函数对峰值做二次插值旁瓣比可以精确到0.1dB量级比肉眼读colorbar可靠得多。5. 用模糊函数验证一体化波形的两个具体技巧5.1 用量化指标替代肉眼读图计算PSLR与ISLR模糊函数图看得再多也不如两个数字可靠。PSLR峰值旁瓣比衡量第二高旁瓣相对主瓣的抑制程度ISLR积分旁瓣比衡量旁瓣总能量占比。对af_2d的输出直接计算function [pslr_dB, islr_dB] sidelobe_metric(chi, guard) % sidelobe_metric 计算模糊函数主瓣外的旁瓣指标 % chi : af_2d 输出已归一化 % guard : 主瓣保护窗口半径采样点 [~, idx] max(chi(:)); [r0, c0] ind2sub(size(chi), idx); mask true(size(chi)); mask(max(1,r0-guard):min(end,r0guard), ... max(1,c0-guard):min(end,c0guard)) false; sidelobe_peak max(chi(mask)); mainlobe_energy sum(chi(~mask), all); total_energy sum(chi, all); pslr_dB 10*log10(sidelobe_peak / chi(r0, c0)); islr_dB 10*log10((total_energy - mainlobe_energy) / mainlobe_energy); endguard取3到5个采样点太小会把主瓣能量算进旁瓣ISLR虚高太大则漏掉紧贴主瓣的旁瓣PSLR偏乐观。套到第4章的仿真结果上OFDM的PSLR通常更好因为旁瓣集中在可识别方向OCDM的ISLR偏大因为脊线携带可观能量。这两个数字可以直接进入波形方案评审后续做旁瓣抑制优化时它们就是现成的目标函数配合MATLAB优化工具箱对窗函数系数或chirp参数做搜索能省掉大量试错。5.2 把OCDM的脊线当成先验做两步搜索OCDM模糊函数的脊线既然由chirp斜率决定回波在给定多普勒ν下的时延估计就存在一个与ν成比例的系统性偏移。工程上不必直接解二维网格最大值而是先粗检测脊线位置再沿脊线法向细化。第一步用af_2d在64×64粗网格上定位峰值得到候选时延τ_c和候选多普勒ν_c第二步以该候选点为中心重新生成几组不同调频斜率的chirp信号做匹配滤波取相关能量最大的一组作为精确估计。这样既避开了OCDM二维搜索的计算量又不会把脊线误读成多目标。对OFDM则沿用传统的先时延后多普勒分级处理不需要这个技巧。最终做一体化波形决策时把这两步搜索的运算量、PSLR/ISLR指标和硬件实现复杂度放进同一张对比表因为OCDM在多普勒容限上的收益往往有一部分会被二维解算成本抵消。本文还有配套的精品资源点击获取