ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OFDM与OCDM模糊函数对比及MATLAB实现

OFDM与OCDM模糊函数对比及MATLAB实现 简介一份MATLAB仿真代码包聚焦OFDM与OCDM雷达通信一体化信号模糊函数对比分析主要解决两种典型波形在距离-多普勒分辨性能上的计算与可视化比较问题适合雷达通信一体化、波形设计与信号处理方向的研究者、工程师及高年级本科生作为课程设计或课题预研参考。包内共3个M脚本分别完成OCDM与OFDM模糊函数计算、均值处理与图形绘制整体仅3KB轻量易读便于逐行复现、参数修改与算法扩展。已有822人下载学习说明该主题在波形设计领域受到一定关注也反映出实际研究需求。通过运行代码读者可直接观察两种波形在距离-多普勒二维平面的分辨主峰与旁瓣差异理解OCDM在低截获与共存场景下的潜力同时代码结构清晰也适合作为后续雷达通信一体化波形优化、性能评估或科研教学的基础工具。1. 雷达通信一体化里OFDM 与 OCDM 的模糊函数为什么值得放在一起比做雷达通信一体化波形设计的人迟早会撞上同一个问题通信要的是频谱效率和调制灵活性雷达要的是距离分辨力和多普勒分辨力两套指标压在同一份波形上怎么量化优劣。OFDM 是通信侧最成熟的方案子载波间隔、循环前缀、信道估计全链路都是现成的OCDM 是近些年经常被拿出来对比的替代者它用离散菲涅尔变换生成一组正交 chirp 基波频谱天然展宽抗窄带干扰的能力更强。要判断哪种波形更适合做一体化最直接的工具就是模糊函数。模糊函数给的是波形本身在时延-多普勒平面上的响应主瓣宽度对应分辨率旁瓣水平对应弱目标被强目标掩盖的概率这是误码率曲线给不了的雷达侧视角。这套 MATLAB 脚本把 OFDM 和 OCDM 从波形生成、单符号模糊函数计算做到多符号统计平均并用 LFM 这类经典雷达波形做基线。对正在做仿真论证的工程师来说拿到手可以直接改子载波数、采样率和多普勒范围画出来的图能直接进方案 PPT 或者论文对比图。2. OFDM 与 OCDM 的波形基矩阵与模糊函数离散化2.1 OFDM 的傅里叶基和 OCDM 的离散菲涅尔基到底差在哪OFDM 生成波形时把 M 个调制符号映射到 M 个正交子载波上时域表达式是 s[n] (1/√M)Σ d_k·exp(j2πkn/M)子载波间隔 Δf fs/M。在 MATLAB 里这就是一行 ifft 的事但要注意 ifft 默认归一化系数是 1/M直接用来做雷达波形对比能量会随 M 变化所以我会补一个 sqrt(M) 系数让变换前后能量守恒。OCDM 的离散菲涅尔变换DFnT就没这么普及需要自己构造变换矩阵。DFnT 的核是 A(p,q) (1/√M)·exp(-jπ(p-q)²/M)展开二次项 (p-q)² p²-2pqq² 就能看出每个基函数本质上是一段离散 chirpp² 项带来随时间变化的瞬时频率-2pq 项保证不同 chirp 之间正交。代码可以这么写M 64; fs 64e6; df fs / M; data (2*randi([0 1],1,M)-1) 1j*(2*randi([0 1],1,M)-1); s_ofdm ifft(data, M) * sqrt(M); idx (0:M-1); A exp(-1j*pi*(idx. - idx).^2 / M) / sqrt(M); s_ocdm A * data.; s_ofdm s_ofdm / norm(s_ofdm); s_ocdm s_ocdm / norm(s_ocdm);逻辑说明idx. - idx 是 M×M 的二维差分矩阵A 的第 p 行第 q 列表示第 q 个调制符号对第 p 个采样时刻的贡献。因为是二次相位s_ocdm 每个采样点都在经历不一样的频率变化整段波形就是一个复合 chirp 叠加。最后统一除以范数保证两种波形在相同平均功率下比较否则 OFDM 和 OCDM 的旁瓣差异会被能量差吃掉。代码里矩阵 A 每次都要重新生成M 固定时可以先算好存成临时变量批量跑参数扫描时能省掉大量重复构造时间。2.2 模糊函数从连续积分到离散网格连续基带信号 s(t) 的自模糊函数是 χ(τ,ν) ∫ s(t)·s*(t-τ)·exp(j2πνt) dt。离散化之后 τ 变成采样点序号 mν 变成频率轴上的点。关键约束是频率分辨率一次积分覆盖符号时长 TM/fsFFT 分辨率下限就是 1/Tfs/MΔf所以单符号模糊函数的多普勒轴做不出比子载波间隔更细的分辨这是 OFDM 一体化波形做长时间相干积累只能靠跨符号处理的原因。离散网格的设计直接决定计算量。网格点数 (2·τ_max1)·(2·fd_max/Δf1)每个点是一次 N 点内积。M 取 64 时网格约 2000~5000 个点MATLAB 直接跑没问题M 到 1024 时暴力循环会跑到分钟级要换成 FFT 互相关加速。后文给出的函数里先保留最直观的内积实现方便按步骤核对结果。2.3 网格参数怎么定参数典型取值M64fs64 MHz对 AF 的影响子载波数 M32~256决定符号时长和时延分辨率M 翻倍则时延分辨率翻倍采样率 fs等于或略大于 M·Δf时延轴量化步长 1/fs过采样会让旁瓣图变平滑但计算量变大最大时延 τ_max0.2~0.5 个符号长度覆盖第一旁瓣和周期旁瓣区间即可最大多普勒 fd_max2~4 倍 Δf覆盖目标速度范围网格点太少时旁瓣趋势看不出来注意M、fs、带宽三个量在对比前必须同时锁定单独放大 M 会同时改变符号时长和距离分辨率旁瓣差异会被参数失配覆盖。表格里的 fd_max 要提醒一句单符号模糊函数的多普勒轴本质上只能分辨到 Δf 的量级所以 fd_max 取 0.5Δf 的时候轴上一共就两三个点画出来的是稀疏离散谱。实际对比中更常见的做法是把 fd_max 固定成几个 Δf 的倍数观察多普勒维的分布趋势而不是追求连续的等高线。2.4 和通信接收机处理路径的区别雷达端做检测时不需要解调数据直接对回波做匹配滤波。也就是说模糊函数计算只关心发射波形和时间-频率搬移后的副本之间有多像不需要信道均衡、符号同步、软判决。这个区别解释了为什么模糊函数计算循环里不用考虑 OFDM 的循环前缀也不用做 FFT 解调只做内积和幅度归一化。把通信链路的模块搬到雷达侧反而会引入新的误差源。3. 单符号级 AF 计算函数实现与旁瓣读图3.1 AFmean_single_symbol.m 在整套脚本里的位置从文件命名看AFmean_single_symbol.m 负责的是最底层的单符号模糊函数计算。我倾向于把它做成一个独立函数输入波形、采样率、时延范围和多普勒范围输出二维模糊函数矩阵。这样后面无论做多符号平均、LFM 基线对比还是参数扫描都可以反复调用同一个函数改一处逻辑全链路生效。3.2 内积形式的离散模糊函数实现下面这个版本不依赖信号处理工具箱任何 MATLAB 版本都能跑。时延用循环移位近似多普勒用线性相位调制function [af, tau_axis, fd_axis] af_single_symbol(s, fs, tau_max, fd_max) N length(s); P sum(abs(s).^2); tau_range -tau_max:tau_max; Ntau length(tau_range); fd_res fs / N; fd_axis -fd_max:fd_res:fd_max; if mod(length(fd_axis), 2) 0 fd_axis fd_axis(1:end-1); end Nfd length(fd_axis); af zeros(Ntau, Nfd); n (0:N-1).; for m 1:Ntau tau tau_range(m); s_delay circshift(s, tau); % 正向时延等价于目标变远 for p 1:Nfd fd fd_axis(p); s_shifted s_delay .* exp(1j*2*pi*fd*n/fs); af(m, p) abs(sum(s .* conj(s_shifted))).^2 / P^2; end end end逻辑说明外层先固定时延 τ把 s 循环位移 m 个采样点内层再叠加一个随频率变化的复指数相位项即目标速度带来的多普勒调制。内积结果取模平方再除以 P²得到归一的功率模糊函数。fd_axis 的步长取 fs/N这是符号时长决定的频率分辨率下限取奇数个点是为了让 τ0、fd0 的峰值落在网格正中间画三维图时视角更对称。采样点与时延的换算要分清输入 tau_max 的单位是采样点画图时再乘 1/fs 变成秒。如果 tau_max 取 16fs 取 64 MHz时延轴就是 ±0.25 μs对应单程约 ±37.5 米。这个量级恰好覆盖典型车载近距离场景的观测需求。fd_max 取 4 倍 Δf 时多普勒轴上有约 9 个独立网格点可以描出旁瓣在多普勒维的分布趋势。3.3 单符号模糊函数怎么读OFDM 的周期旁瓣和 OCDM 的平面扩散跑完函数用 imagesc 看一眼幅度矩阵。时延轴正负两个方向看OFDM 的主瓣很锐但沿着时延轴会看到周期性出现的旁瓣峰间隔约为 1/Δf 对应的采样点数。这个周期峰来自 OFDM 子载波梳状频谱的周期自相关子载波数越多、频谱越接近矩形这种周期旁瓣越明显。观察项OFDM 单符号OCDM 单符号时延轴主瓣锐利旁瓣衰减较快锐利旁瓣衰减较快周期旁瓣出现在 1/Δf 整数倍位置不明显旁瓣集中度沿固定时延线集中二维平面扩散OCDM 的主瓣宽度和 OFDM 接近旁瓣结构明显不同。因为每个数据符号的能量被 chirp 基打散到整个符号时间内旁瓣不再集中在固定的时延周期位置而是散布在时延-多普勒平面上。单看峰值旁瓣比OCDM 不一定比 OFDM 低但它的高旁瓣区域更随机对多目标场景来说意味着更低的固定掩蔽概率。3.4 单符号结果不稳定的根源随机 QPSK 数据每次生成的符号都不一样交叉项 Σ d_i·d_j* 直接导致旁瓣幅度随数据波动。同一个 OFDM 参数下跑 20 次单符号模糊函数旁瓣峰值能差好几个分贝。所以单符号 AF 适合做流程调试和代码验证不适合做波形固有能力评估。要做公平对比必须进到多符号统计平均这一步把数据随机项在期望意义上抹掉。4. 多符号统计平均与 LFM 基线对比4.1 平均模糊函数消除的是数据随机项不是雷达积累多符号平均的思想来自模糊函数的统计定义发射符号承载的数据是随机的雷达侧看到的是大量数据符号下旁瓣的统计分布。对 L 个独立随机数据符号分别计算 AF再对幅度取平均数据交叉项会因为相位随机而趋于零剩下的是波形结构本身固有的模糊特性。这个操作和脉冲积累不同它不改变信噪比只是给“这个波形的模糊函数到底长什么样”一个更稳定的估计。L 的选择要看 M。M64 的 QPSK 符号有 4⁶⁴ 种组合L 取 100 到 300 时统计平均已经收敛旁瓣峰值起伏基本稳定在 1 dB 以内L 超过 500 后曲线变化很小只增加计算时间。如果旁瓣区域一直有规律地上下跳动先检查随机数生成器是否固定了种子再确认每次循环确实重新生成了数据向量。4.2 OFDM 均值与 LFM 基线一体实现的脚本组织AFmean_lfm_OFDM_single.m 一次调用完成两条线一条是 OFDM 的多符号平均另一条是带宽、时宽对齐后的 LFM 单符号模糊函数。LFM 作为雷达基线的作用是给 OFDM 的旁瓣水平提供一个“雷达专用波形本来能做到什么程度”的参照。L 200; M 64; fs 64e6; df fs / M; tau_max 16; fd_max 4 * df; AF_sum 0; for l 1:L d (2*randi([0 1],1,M)-1) 1j*(2*randi([0 1],1,M)-1); s ifft(d, M) * sqrt(M); s s / norm(s); [af_l, ~, ~] af_single_symbol(s, fs, tau_max, fd_max); AF_sum AF_sum af_l; end AF_OFDM_mean AF_sum / L; T_sym M / fs; B M * df; t (0:M-1) / fs; s_lfm exp(1j*pi*(B/T_sym)*t.^2); s_lfm s_lfm / norm(s_lfm); [AF_LFM, tau_axis, fd_axis] af_single_symbol(s_lfm, fs, tau_max, fd_max);参数说明B 取 M·df 就是整个符号占用的频带宽度T_sym 对应符号时长这样 LFM 的时宽带宽积 TB 恰好等于 M和 OFDM 的频域符号数一致两者在距离分辨率和多普勒分辨率上才是同一个量级。如果 LFM 的带宽或时宽对不齐后续对比出来的旁瓣差异没有意义。AF_sum 累加的是幅度平方功率值不是复数场因为单符号 AF 的相位本身没有物理意义。4.3 三类波形的对比维度和典型差异对比项LFM 基线OFDM 平均OCDM 平均时延主瓣宽度约 1/B约 1/B约 1/B多普勒主瓣宽度约 1/T约 1/T约 1/T旁瓣分布沿距离-多普勒耦合斜线时延轴周期旁瓣整个平面扩散数据依赖无均值化后弱化均值化后弱化LFM 的斜线旁瓣来自调频斜率和二次相位这是雷达里最经典的距离-多普勒耦合。单目标时耦合不成问题多目标时一条斜线上的两个目标可能互相遮挡。OFDM 平均后的周期旁瓣是子载波间隔带来的属于结构旁瓣数据平均消不掉OCDM 把旁瓣能量摊到二维平面没有明显的周期性集中代价是整个旁瓣底抬高。三者的峰值旁瓣比没有绝对高低得按系统场景选强杂波集中在固定距离段时OFDM 的周期旁瓣可能刚好落到杂波区频点被干扰压掉时OCDM 的抗频谱凹陷优势就更值钱。4.4 均值化处理后仍存在的结构旁瓣随机数据项被平均以后剩下的结构旁瓣来自波形本身的频谱形状和符号结构。OFDM 的矩形成型频谱在时延域对应 sinc 型旁瓣再叠加上子载波间隔周期峰OCDM 的频谱是多个 chirp 分量的叠加没有规则频点因此也不存在固定周期峰。实现时如果给 OFDM 加了窗函数或滚降周期旁瓣的幅度会被压低但主瓣会变宽对比时要明确标注是否加窗否则两侧波形不在同一条件下。5. 可视化脚本 plot_OCDM_OFDM.m 的工程化与参数坑5.1 一张 mesh 看轮廓一张 pcolor 看旁瓣结构把 OFDM 平均模糊函数和 OCDM 平均模糊函数画在一起只叠线条容易糊成一团更实用的做法是分两幅图但用完全一致的坐标轴范围和 dB 下限这样视觉比例可以直接比。mesh 适合看主瓣形状pcolor 适合量旁瓣峰值的位置和宽度。figure(1) mesh(fd_axis/1e3, tau_axis/fs*1e6, 20*log10(AF_OFDM_mean eps)) xlabel(多普勒频率 (kHz)) ylabel(时延 (μs)) zlabel(归一化幅度 (dB)) zlim([-40 0]) title(OFDM 平均模糊函数) figure(2) pcolor(fd_axis/1e3, tau_axis/fs*1e6, 20*log10(AF_OCDM_mean eps)) shading interp colorbar caxis([-40 0]) xlabel(多普勒频率 (kHz)) ylabel(时延 (μs)) title(OCDM 平均模糊函数)逻辑说明时延轴除以 fs 乘以 1e6 换成微秒多普勒轴除以 1e3 换成 kHz脱离了采样点语义图纸上才能和雷达参数直接对应。dB 下限压到 -40 dB 是经验值低于这个水平的旁瓣对检测影响可忽略显示出来反而会掩盖 -20 dB 附近的有效旁瓣结构。5.2 三个直接改变结论的参数坑第一个坑是时延循环移位。af_single_symbol 里的 circshift 会把符号尾部的采样翻转到符号头部符号本身周期性被破坏旁瓣幅度在边缘时延处出现异常。要看真实回波特性应该改成零填充时延也就是把 s 尾部补零再和原始符号做互相关两者在 τ 接近符号长度时差异特别大。第二个坑是多普勒轴上限。单符号观测时间就是 TM/fs多普勒分辨率不会好于 Δf所以 fd_max 取到 2Δf 以上时网格点之间的旁瓣形态全是欠采样的插值结果没有物理意义。跨符号的多普勒处理需要多个符号联合计算不能靠增加 fd_max 硬撑。第三个坑是 M 与 FFT 点数的匹配。仿真里常见 1024 点 FFT 只放 64 个子载波其余补零。补零会让频谱过采样画出来的模糊函数时延轴更平滑但这是插值效果不是真实分辨率提升。对比 OFDM 和 OCDM 时两者必须用相同的主载波数和相同的有效带宽否则差异来自补零比例而不是调制方式。5.3 把“看起来差不多”变成可复用的量化指标图形对比适合定性判断给方案评审时还需要一个数字。提取峰值旁瓣比PSLR的方法是把主瓣附近的区域挖掉再找其余区域的最大值。主瓣范围按距离分辨率 1/B 和多普勒分辨率 1/T 确定保留 3 dB 宽度内即可mask true(size(AF_OFDM_mean)); mask(abs(tau_axis/fs) 0.5/B abs(fd_axis) 0.5/T_sym) false; pslr_ofdm max(20*log10(AF_OFDM_mean(mask) eps));配合 MATLAB 的 for 脚本对 M、fs 做参数扫描每次只改一个变量记录 PSLR 变化曲线就是波形设计最直观的依据。新版 MATLAB 的 codex 还能辅助生成这类批量扫描代码前提是 af_single_symbol 保持纯函数、无全局状态。若后续要做链路级验证Simulink 里带 OFDM 调制解调模块把脚本生成的符号映射关系对齐到模块参数即可实测回波数据如果是 CSV 落盘的转成复数基带后直接喂给 af_single_symbol先跑出测量基线再谈波形取舍。本文还有配套的精品资源点击获取
返回列表