【MATLAB源码-第450期】基于MATLAB的GMSK调制系统中IQ相干、差分、鉴频与Viterbi解调算法对比仿真
操作环境:
MATLAB 2024a
1、算法描述
摘要
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
点击下方名片关注公众号获取
