第【100】期--基于格雷编码的QAM系统在AWGN信道下的误码率分析--MATLAB完整代码
关注我,追更更多通信仿真代码!
文章目录
- 摘要
- 一、引言
- 二、系统模型与理论基础
- 2.1 16-QAM系统基带模型
- 2.2 星座映射策略与汉明距离分析
- 2.3 最大似然译码
- 2.4 理论误码率
- 三、仿真系统设计
- 3.1 映射细节
- 3.2 仿真参数
- 3.3 仿真结果分析
- 3.4 部分代码
- 四、结论
摘要
正交幅度调制(QAM)凭借其卓越的频谱效率,在现代高速数字通信系统中占据核心地位。本文以16-QAM调制解调系统为研究对象,深入探讨了格雷编码与自然二进制编码两种星座映射策略对系统抗噪声性能的影响机理。基于加性高斯白噪声(AWGN)信道模型,采用最大似然准则下的最小欧氏距离解调算法,建立了完整的基带仿真链路。通过对比仿真实验与理论误码率曲线,定量分析了两种映射方式在符号判决过程中的汉明距离分布差异。研究结果表明,格雷编码通过将相邻星座点之间的汉明距离最小化,在噪声引起的星座点偏移判决中显著降低了比特错误概率,验证了格雷编码在高阶QAM系统中的工程应用价值。
一、引言
随着无线通信技术的飞速发展,有限的频谱资源与日益增长的传输速率需求之间的矛盾愈发突出。正交幅度调制(Quadrature Amplitude Modulation, QAM)作为一种将信息载荷同时赋予载波幅度与相位的二维调制技术,能够在有限的信道带宽内高效传输多比特信息,因而被广泛采纳为数字电视广播、Wi-Fi协议簇以及4G/5G蜂窝通信等标准的核心物理层技术。
在QAM系统中,二进制比特流至复数星座点的映射规则直接影响着系统的端到端误码性能。理论分析表明,当接收信号受高斯白噪声干扰落入相邻星座点的判决域时,所产生的比特错误数取决于两星座点对应比特序列的汉明距离。自然二进制编码因未考虑空间邻接关系,常导致相邻星座点具有较大的汉明距离;而格雷编码则通过精心设计的映射表,确保任意几何相邻点之间仅相差一个比特。
本文旨在通过构建完整的MATLAB仿真链路,系统评估上述两种映射方式在AWGN信道下的误码率差异。
二、系统模型与理论基础
2.1 16-QAM系统基带模型
2.2 星座映射策略与汉明距离分析
星座映射是将 k 位信息比特唯一映射至星座点集合 S 的数学法则,本质上建立了汉明空间与欧氏空间之间的拓扑对应关系。
2.3 最大似然译码
2.4 理论误码率
三、仿真系统设计
3.1 映射细节
从表中可直观验证:任意水平或垂直相邻的两个星座点,其对应的 4 比特序列均仅在 1 个位上存在差异(汉明距离恒为 1)。
3.2 仿真参数
| 参数名称 | 符号/说明 | 取值/设置 |
|---|---|---|
| 调制阶数 | M MM | 16 |
| 每符号比特数 | k = log 2 M k = \log_2 Mk=log2M | 4 |
| 总传输比特数 | n nn | 100,000 |
| 等效符号数 | n / k n / kn/k | 25,000 |
| 比特信噪比范围 | E b / N 0 E_b/N_0Eb/N0 | 0 ~ 10 dB,步进 1 dB |
| 信道模型 | — | 加性高斯白噪声(AWGN) |
| 调制映射方式 | — | 格雷编码(Gray) / 自然二进制编码(Binary) |
| 解调准则 | — | 最大似然(ML),等价于最小欧氏距离 |
| 噪声生成 | — | 复高斯白噪声,实虚部分别独立生成 |
3.3 仿真结果分析
可以看到,格雷编码的误码率显著低于二进制编码,且与理论值高度吻合,验证了格雷编码通过最小化相邻星座点汉明距离有效降低误比特率的核心优势
3.4 部分代码
clc,clear,close all;%%====================1.数据生成====================M=16;%调制阶数 k=log2(M);%每符号比特数(k=4)n=100000;%处理的总比特数 dataIn=randi([01],n,1);%生成随机二进制序列 dataInMatrix=reshape(dataIn,length(dataIn)/k,k);dataSymbolsIn=bi2de(dataInMatrix);%转换为符号索引(0~15)%%====================2.调制====================dataMod=QAM_mod_Binary(dataSymbolsIn);%自然二进制编码调制 dataModG=QAM_mod_Gray(dataSymbolsIn);%格雷编码调制%%====================3.AWGN 信道与 BER 计算====================EbNo_vec=0:1:10;%Eb/N0 扫描范围(dB)ber_vec=zeros(size(EbNo_vec));%二进制编码 BER berG_vec=zeros(size(EbNo_vec));%格雷编码 BER theoretical_ber=zeros(size(EbNo_vec));%理论 BERforh=1:length(EbNo_vec)snr=EbNo_vec(h)+10*log10(k);receivedSignal=awgn_channel(dataMod,snr);receivedSignalG=awgn_channel(dataModG,snr);dataSymbolsOut=QAM_demod_Binary(receivedSignal);dataSymbolsOutG=QAM_demod_Gray(receivedSignalG);dataOutMatrix=de2bi(dataSymbolsOut,k);dataOut=dataOutMatrix(:);dataOutMatrixG=de2bi(dataSymbolsOutG,k);dataOutG=dataOutMatrixG(:);[~,ber]=biterr(dataIn,dataOut);[~,berG]=biterr(dataIn,dataOutG);ber_vec(h)=ber;berG_vec(h)=berG;theoretical_ber(h)=3/8*erfc(sqrt(0.4*10^(EbNo_vec(h)/10)));end%%====================4.绘制 BER 曲线====================figure(1);semilogy(EbNo_vec,ber_vec,'r-s','LineWidth',1.5,'MarkerFaceColor','r');hold on;semilogy(EbNo_vec,berG_vec,'b-o','LineWidth',1.5,'MarkerFaceColor','b');semilogy(EbNo_vec,theoretical_ber,'k-','LineWidth',2);grid on;xlabel('Eb/N0 (dB)');ylabel('Bit Error Rate (BER)');title('16-QAM 误码率性能对比');legend('自然二进制编码 (仿真)','格雷编码 (仿真)','格雷编码 (理论)','Location','southwest');hold off;%%====================5.绘制星座图(对比二进制与格雷编码)====================EbNo_demo=[0,6,12];%低、中、高信噪比figure(2);set(gcf,'Position',[100,100,1400,900]);%宽屏显示foridx=1:length(EbNo_demo)snr_demo=EbNo_demo(idx)+10*log10(k);%生成两种编码的含噪信号(注意使用相同的噪声种子?为了公平对比,可固定随机种子)%但为了显示典型效果,这里分别独立生成 rx_binary=awgn_channel(dataMod,snr_demo);rx_gray=awgn_channel(dataModG,snr_demo);%----左子图:二进制编码----subplot(length(EbNo_demo),2,(idx-1)*2+1);plot(real(rx_binary),imag(rx_binary),'b.','MarkerSize',4);hold on;plot(real(dataMod),imag(dataMod),'r*','MarkerSize',10,'LineWidth',1.5);hold off;grid on;axis([-55-55]);axis square;xlabel('同相分量 (I)');ylabel('正交分量 (Q)');title(['Eb/N0 = ',num2str(EbNo_demo(idx)),' dB (二进制编码)']);legend('接收信号','理想星座','Location','best');%----右子图:格雷编码----subplot(length(EbNo_demo),2,(idx-1)*2+2);plot(real(rx_gray),imag(rx_gray),'b.','MarkerSize',4);hold on;plot(real(dataModG),imag(dataModG),'r*','MarkerSize',10,'LineWidth',1.5);hold off;grid on;axis([-55-55]);axis square;xlabel('同相分量 (I)');ylabel('正交分量 (Q)');title(['Eb/N0 = ',num2str(EbNo_demo(idx)),' dB (格雷编码)']);legend('接收信号','理想星座','Location','best');endsgtitle('16-QAM 星座图对比:二进制编码 vs 格雷编码');%%====================6.保存结果====================saveas(figure(1),'BER_Curve.png');saveas(figure(2),'Constellation_Comparison.png');disp('仿真完成!BER 曲线和星座对比图已保存。');四、结论
本文通过 MATLAB 仿真验证了格雷编码在 16-QAM 系统中的抗噪声优势。仿真结果表明,在 AWGN 信道下,格雷编码通过最小化相邻星座点间的汉明距离,相比自然二进制编码能显著降低误比特率,其性能曲线与理论值高度吻合。这证实了格雷编码在高阶 QAM 调制中的工程价值,为实际通信系统设计提供了参考。
完整仿真代码可见往期文章文末VX公众号(包含往期博客所有代码),所见即所得