【MATLAB源码-第450期】基于MATLAB的GMSK调制系统中IQ相干、差分、鉴频与Viterbi解调算法对比仿真 操作环境MATLAB 2024a1、算法描述摘要GMSK是一种典型的连续相位调制方式具有恒包络、频谱相对集中、适合非线性功放传输等特点因此在移动通信、卫星通信、软件无线电和低功耗无线链路中具有较高的工程价值。本文基于MATLAB平台设计并实现了一套GMSK调制解调仿真系统围绕I/Q相干解调、1 bit差分解调、2 bit差分解调、鉴频解调和Viterbi解调五种方法展开对比分析。系统首先生成随机二进制信息序列并在每帧前后加入保护符号以降低高斯滤波记忆对有效信息位误码统计的影响。随后系统采用BT值、采样率、调制指数和高斯滤波器跨度等参数构建GMSK基带调制信号并在不同Eb/N0条件下加入复高斯白噪声。接收端分别使用五类解调算法恢复比特序列并计算有效信息位误码率。仿真结果通过高斯频率脉冲、I/Q与相位波形、频率轨迹、相位连续轨迹、基带频谱、局部判决对比图、BER曲线和指定信噪比下的误码率柱状图进行展示。研究表明该系统能够较完整地体现GMSK连续相位调制的波形特征和不同解调方法在抗噪声性能、实现复杂度、符号记忆利用程度方面的差异为通信系统仿真、解调算法教学和软件无线电原型验证提供了较清晰的参考。关键词 GMSK调制连续相位调制差分解调鉴频解调Viterbi检测误码率MATLAB仿真一、引言在数字通信系统中调制方式的选择直接影响频谱利用率、功率放大效率和接收端解调复杂度。对于带宽受限、功率敏感或硬件成本受约束的通信场景恒包络和连续相位特性具有现实意义。GMSK是在MSK基础上引入高斯成形滤波的调制方式。发送端先对二进制符号进行高斯滤波使频率变化更加平滑再通过相位积分形成连续相位信号。与突变相位或矩形脉冲频移键控相比GMSK能够降低旁瓣能量改善带外辐射表现。MathWorks的GMSK调制相关文档也将其归入数字基带CPM调制范畴说明其核心处理离不开高斯脉冲成形、每符号采样点数、BT积和脉冲长度等关键参数。本文所研究的MATLAB项目并不是单纯画一个GMSK波形而是围绕“同一调制信号、同一噪声条件、不同接收算法”的公平比较展开。代码中设置了统一参数结构体包含每符号采样点数、BT值、滤波器跨度、调制指数、帧数、每帧有效信息位数、保护段长度、Eb/N0扫描范围和随机种子等内容。主程序先生成发送帧再完成GMSK调制然后在不同信噪比下加入噪声最后依次调用五种解调函数进行误码率统计。这样的结构适合对比不同解调思路而不是只展示单一算法的理想效果。GMSK解调方法具有明显层次。简单方法可以通过相位差、差分相乘或鉴频器近似实现复杂方法则需要利用高斯滤波带来的符号记忆用序列检测方法恢复比特。官方GMSK Demodulator Baseband文档明确提到该模块用于解调GMSK基带信号并在算法说明中涉及Viterbi检测等机制comm.GMSKDemodulator文档也说明其可使用Viterbi算法或max-log MAP算法完成GMSK调制数据的解调。 因此本文将Viterbi方法与差分、鉴频、I/Q相干方法放在同一仿真框架下比较是符合GMSK接收机设计逻辑的。二、系统模型与仿真流程本系统采用模块化MATLAB程序结构主函数为main.m辅助函数统一放置在function文件夹中。主程序开头完成环境清理、路径添加和参数读取随后创建图像输出文件夹。参数函数setPar.m负责统一配置仿真参数包括每符号8个采样点、BT值0.30、高斯滤波跨度4个符号、调制指数0.5、120帧数据、每帧200个有效信息位、每帧前后各24个保护符号、Eb/N0从0 dB到16 dB按2 dB递增扫描并设置用于结果复现的随机种子。系统的数据源由makeFrame.m生成。该函数先产生随机二进制有效信息位再在每一帧前后加入交替保护符号并记录有效信息位在完整发送帧中的索引位置。这个设计是合理的因为GMSK中的高斯成形滤波不是无记忆操作符号之间存在扩展影响。如果直接从完整帧首尾统计误码滤波器瞬态会污染结果。因此代码通过保护段隔离边界效应只对有效信息位进行BER计算。这个处理比简单全帧统计更严谨。GMSK调制由gmskMod.m完成。该函数先将二进制比特映射为双极性符号再把每个符号扩展为若干采样点随后与高斯FIR脉冲卷积得到平滑的频率轨迹。之后系统对频率轨迹进行累加积分得到连续相位最后构造复基带信号。这个流程能够直接反映GMSK的核心特征信息并不是以突变相位形式发送而是通过平滑频率变化逐步积累到相位中。MathWorks关于gaussdesign的文档示例中也使用BT值0.3、滤波器跨度4个符号、每符号8个采样点构造GSM GMSK数字蜂窝通信系统中的高斯脉冲这与本项目参数具有一致的工程背景。信道部分由addNoise.m实现。该函数根据当前Eb/N0计算信噪比并基于发送信号平均功率生成复高斯噪声。由于五种解调算法使用同一接收序列比较结果具有一致输入条件。主程序每一个Eb/N0点均完成一次噪声添加和五种算法解调并将误码率保存到ber_result.csv中。最终系统调用drawFigs.m输出八张图用于从时域、相位、频率、频谱和误码率多个角度观察仿真结果。三、GMSK调制实现分析GMSK的发送过程可以拆成四个关键步骤符号映射、采样扩展、高斯滤波和相位积分。代码中首先将比特0和1映射为负、正双极性符号。这样做的原因是频率调制需要正负方向的符号驱动二进制直接参与滤波并不方便。随后程序将每个符号扩展为固定采样点数使离散仿真能够描述一个符号周期内的连续变化。采样率越高波形越平滑但运算量也越大。这里选择每符号8个采样点是一个兼顾细节和计算量的设置。高斯滤波器由gaussFir.m生成。函数根据BT值和滤波跨度计算离散高斯脉冲并对脉冲系数进行单位面积归一化。BT值越小高斯滤波越强频谱越集中但符号间记忆也会更明显BT值越大符号变化更接近原始MSK但频谱收敛优势会下降。本项目采用BT等于0.30属于典型GMSK参数选择。代码中生成的高斯脉冲会在第一张图中显示便于观察滤波器的时域形状。高斯滤波后的符号序列不再是突变矩形脉冲而是平滑的频率轨迹。gmskMod.m将该频率轨迹按调制指数进行积分得到连续相位。最后通过余弦和正弦构造复基带信号。由于复基带信号的幅度主要保持恒定因此相位轨迹是观察GMSK调制状态的关键。系统输出的I/Q波形和相位曲线能够显示信号随时间变化的过程相位连续轨迹图则进一步说明信号不会像普通PSK那样在星座点之间发生突跳。从工程角度看这种手写调制流程比直接调用工具箱模块更适合教学和算法研究。直接调用内置模块虽然高效但内部细节不完全透明。当前代码把高斯滤波、相位积分、复基带生成等步骤拆开便于学习者理解GMSK的本质。对于需要解释“为什么GMSK频谱较集中”“为什么接收端存在符号记忆”“为什么Viterbi方法可能优于简单硬判决”的场景这种代码结构更有价值。四、五种解调方法设计分析第一种方法是I/Q相干解调对应demodIq.m。该方法先通过phaseUnwrap.m计算接收信号瞬时相位并对跨越正负π的相位跳变进行展开处理然后计算一个符号周期内的相位变化量最后进行延迟补偿和硬判决。它的直观性较强适合理解连续相位信号的解调逻辑。但它对相位连续性和噪声较敏感如果相位展开受到严重噪声扰动判决指标会产生偏差。第二种方法是1 bit差分解调对应demodDiff1.m。该算法用当前符号采样点乘以前一符号采样点的共轭得到相邻符号之间的相位变化。差分思路的优势是可以削弱固定相位偏移影响因此在非严格相干条件下有一定实用价值。缺点是它只利用相邻符号关系无法完整建模高斯滤波导致的多符号记忆所以在低信噪比或符号间干扰较明显时性能通常受限。第三种方法是2 bit差分解调对应demodDiff2.m。该函数同时提取两符号间隔差分特征和一符号相位变化量并采用类似路径度量的方式逐帧处理。相比1 bit差分它引入了更长的符号关系能够利用更多前后信息。代码中还设置了权重参数d2w用于平衡两符号差分特征和一阶相位特征。这类方法的特点是复杂度高于普通差分但低于完整序列检测属于折中方案。第四种方法是鉴频解调对应demodDisc.m和freqFeat.m中的disc模式。鉴频法通过相邻采样点的复数乘积估计瞬时频率再按符号周期求平均得到符号级判决指标。它的结构简单运算量较小适合构建低复杂度接收机。GNU Radio的GMSK模块说明中也体现了软件无线电环境下GMSK调制模块的常见使用方式而社区和实际工程中常会围绕鉴频、差分和序列检测之间的实现取舍展开讨论。第五种方法是Viterbi解调对应demodVit.m。该方法首先通过chanCoef.m估计高斯滤波带来的等效符号响应再把符号记忆转化为有限状态 trellis。接收端每个符号时刻计算候选路径的度量并保留各状态的幸存路径最后从最优末状态反向回溯得到估计比特。Viterbi方法的核心价值在于它不是孤立地判断当前符号而是把一段符号序列作为整体进行检测。近年的卫星AIS研究中也继续围绕GMSK、差分检测、MLSE和List Viterbi结构展开改进说明序列检测在GMSK类连续相位信号中仍具有研究和工程意义。五、误码率统计与图像输出设计本项目的误码率统计设计比较清楚。主程序在每一个Eb/N0点下生成一次接收信号并将该接收信号同时送入五种解调器。这样避免了不同算法面对不同噪声样本的问题。每种算法输出完整帧的估计比特后程序只取idx记录的有效信息位进行比较并用错误比特数除以总有效比特数得到BER。最终结果以表格形式显示并保存为CSV文件便于后续复查或制作报告。图像输出方面系统生成八张结果图。第一张为GMSK高斯频率脉冲用来展示高斯滤波器形状。第二张为I、Q和相位波形用来观察发送信号的复基带组成。第三张为高斯滤波后的频率轨迹和原始符号对比能够直接体现高斯成形对频率变化的平滑作用。第四张为相位连续轨迹用于展示GMSK恒包络连续相位特征。第五张为基带频谱用于观察能量集中情况。第六张为指定信噪比下的局部判决对比用来直观看出不同算法在局部比特上的判决差异。第七张为五种算法的BER曲线是核心性能比较图。第八张为指定信噪比下的BER柱状图方便对单一工作点进行横向比较。这些图像覆盖了调制波形、频率响应、相位轨迹、频谱特征和误码性能结构比较完整。对于通信仿真项目来说只输出BER曲线是不够的因为BER只能反映最终错误概率不能解释调制过程和误差来源。当前项目通过多维图像把“为什么GMSK是连续相位调制”“为什么高斯滤波会引入符号记忆”“为什么不同解调方法性能不同”展示出来实用性明显更强。六、仿真结果分析从系统逻辑判断随着Eb/N0逐步升高五种解调算法的BER应整体下降。这是AWGN信道下数字通信系统的基本规律。若某一算法在高信噪比下仍出现明显误码平台则需要检查群时延补偿、判决符号极性、保护段长度或Viterbi状态建模是否存在偏差。当前代码中已经通过p.gd进行符号级群时延补偿并通过保护段降低帧边界影响因此误码统计逻辑是成立的。不同算法的性能差异主要来自信息利用程度。鉴频和1 bit差分方法计算简单但只使用局部相位或频率信息。I/Q相干方法利用连续相位但对相位展开质量有要求。2 bit差分方法引入更长的符号关系因此比普通差分更能适应GMSK的记忆特征。Viterbi方法通过状态转移和路径度量进行序列检测理论上更适合处理由高斯滤波引入的符号间相关性。MathWorks官方GMSK解调模块采用Viterbi或max-log MAP这类序列检测思路也说明GMSK接收并不只是简单逐符号硬判决问题。不过工程结论不能只看“谁最低”。如果系统是低成本、低功耗或实时性要求很强的接收机鉴频和差分方法可能更有吸引力如果系统追求更低误码率且算力允许Viterbi检测更有优势。当前项目的价值在于把这种取舍关系放在同一平台上观察。它不是单方面强调复杂算法而是让使用者通过BER曲线、局部判决图和频谱图同时理解性能、复杂度和信号特性之间的关系。近年来GMSK解调研究也并未停止在传统方法层面。例如2023年有研究将一维卷积网络与双向LSTM结合用于强太阳风湍流信道下的GMSK解调2025年也有研究将并行List Viterbi算法用于卫星AIS检测以提升候选序列多样性和复杂接收场景下的检测能力。 这些方向说明传统差分、鉴频和Viterbi方法仍然是理解新型接收机的基础。没有这些基础直接上深度学习或复杂序列搜索很容易只会调参数而不理解误差机理。七、系统特点本系统的第一个特点是结构清晰。主程序负责调度参数函数负责配置调制、噪声、五种解调器和绘图函数各自独立。这样的组织方式便于维护也便于后续增加新算法。例如如果需要加入Costas环、PLL同步、软判决Viterbi或深度学习解调器只需要新增函数并在主程序中加入调用即可。第二个特点是比较公平。五种解调算法在相同数据帧、相同信道噪声和相同Eb/N0扫描条件下运行BER统计只针对有效信息位不把保护段纳入误码计算。这使结果更能反映算法本身差异而不是帧边界或随机噪声差异。第三个特点是图像完整。系统没有只保存单一误码率曲线而是从高斯脉冲、I/Q波形、相位轨迹、频率轨迹、频谱、局部判决和BER多个角度展示结果。对于通信类仿真图像解释能力非常关键。单独的曲线只能说明性能结果多角度图像才能说明系统为什么会得到这种结果。第四个特点是算法层次分明。I/Q相干、差分、鉴频和Viterbi方法分别代表不同复杂度的接收思路。学习者可以从简单方法开始理解相位变化再过渡到差分抗相位偏移最后理解序列检测如何利用GMSK的符号记忆。这样的安排符合通信接收机学习路径。第五个特点是具备扩展空间。当前系统使用AWGN信道后续可增加频偏、相偏、符号定时偏差、多径衰落和非线性功放影响也可以进一步加入同步模块。若用于更深入研究还可以将Viterbi检测扩展为软输出形式或者引入神经网络作为端到端特征提取器与传统方法进行公平比较。八、结论本文基于MATLAB实现了一套GMSK多解调算法对比仿真系统。系统以随机二进制数据为输入通过高斯滤波和相位积分生成连续相位GMSK复基带信号并在AWGN信道下对I/Q相干、1 bit差分、2 bit差分、鉴频和Viterbi五种解调方法进行误码率对比。代码采用模块化结构参数集中管理图像自动保存结果表格输出整体适合通信仿真学习和算法验证。从技术意义看该项目体现了GMSK调制的三个核心问题第一高斯滤波改善频谱但引入符号记忆第二简单差分和鉴频方法实现方便但信息利用有限第三Viterbi序列检测能够利用符号记忆适合追求更高检测性能的接收端。通过八张图像和BER表格系统不仅能展示结果还能解释波形、频率、相位和误码率之间的关系。从应用价值看该项目可用于通信原理、数字调制、软件无线电、卫星AIS接收和连续相位调制算法学习。它的优势不是堆砌复杂模型而是把GMSK的调制机理和典型解调方法放在一个可运行、可修改、可画图的框架中。后续若继续拓展可加入载波同步、定时同步、频偏补偿、多径信道、软判决译码和深度学习解调从而形成更完整的GMSK接收机仿真平台。参考文献MathWorks. “GMSK Modulator Baseband.” MathWorks Documentation, 2026, accessed 26 May 2026.MathWorks. “comm.GMSKModulator.” MathWorks Documentation, 2026, accessed 26 May 2026.MathWorks. “GMSK Demodulator Baseband.” MathWorks Documentation, 2026, accessed 26 May 2026.MathWorks. “comm.GMSKDemodulator.” MathWorks Documentation, 2026, accessed 26 May 2026.MathWorks. “gaussdesign: Gaussian FIR Pulse-Shaping Filter Design.” MathWorks Documentation, 2026, accessed 26 May 2026.Zhu, M., et al. “GMSK Demodulation Combining 1D-CNN and Bi-LSTM Network over Strong Solar Wind Turbulence Channel.” Radio Science, 2023.Kanaan, L., et al. “Application of the List Viterbi Algorithm for Satellite-Based AIS Signal Decoding.” arXiv, 2025.Galvão, Lucas C., et al. “Bandwidth Efficient Gaussian Minimum Frequency-Shift Keying Approach for Software Defined Radio.” IEEE, 2018.GNU Radio. “GMSK Mod.” GNU Radio Wiki, 2021.Wen, Q., et al. “Analysis of Key Technologies of Gaussian Filtered Minimum Shift Keying Modulation Based on Physical Layer.” SPIE Proceedings, 2024.2、仿真结果演示3、关键代码展示略4、MATLAB 源码获取V点击下方名片关注公众号获取