文章目录
前言
M-QAM(M-ary Quadrature Amplitude Modulation,M进制正交幅度调制)是一种高阶数字调制技术,其中M表示调制符号集合中的符号数,也称为调制阶数。M-QAM调制解调器在数字通信系统中用于提高数据传输的效率和带宽利用率。本文给出AWGN信道的M-QAM通信系统性能仿真的MATLAB源代码与仿真结果。
一、M-QAM调制
M-QAM调制包括以下过程:
(1)比特到符号映射:在调制过程中,首先将一组比特(通常是2的整数倍,例如2、4、6、8比特)映射到一个符号上。对于M-QAM,每个符号代表log2(M)比特。例如,在16-QAM中,每个符号代表4比特。
(2)符号映射:这些比特被映射到复平面上的一个点,该点的幅度和相位由比特组决定。在M-QAM中,比特序列在复平面是被映射为M个点,每个点代表一个可能的符号。
(3)幅度和相位调制:每个符号的实部和虚部分别调制到同相(I)和正交(Q)载波上,这两个载波通常具有90度的相位差。
二、M-QAM解调
M-QAM解调包括以下过程:
(1)接收信号:接收到的信号包含调制后的信息,可能受到噪声和信道衰减的影响。
(2)载波同步:解调器需要与发送端的载波同步,以便正确地分离出I和Q分量。
(3)符号检测:解调器通过比较接收到的信号的幅度和相位与预定义的M-QAM星座图中的点,来确定接收到的每个符号。
(4)符号到比特的映射:根据事先约定好的映射规则(与发射端的比特到符号的映射过程相逆),从接收到的符号逆映射出比特,从而恢复原始的比特流。
三、M-QAM的特点与挑战
M-QAM是高阶调制,具有如下特点:
(1)更高的数据传输率:与二进制调制(如BPSK或QPSK)相比,M-QAM可以传输更多的比特 per symbol,从而在相同的带宽下实现更高的数据传输率。
(2)更好的频谱效率:通过在每个符号中编码更多的比特,M-QAM提高了频谱的利用率。
M-QAM面临的挑战:
(1)噪声和干扰:随着M值的增加,星座点之间的距离减小,这使得系统对噪声和干扰更加敏感。
(2)同步:精确的载波和符号同步对于高阶QAM调制至关重要。
四、M-QAM的应用
M-QAM调制广泛应用于有线和无线通信系统中,如数字电视、无线局域网(Wi-Fi)、4G和5G移动通信网络等。随着技术的发展,更高阶的QAM调制(如256-QAM和1024-QAM)被用于提高数据传输速率和系统容量。
五、MATLAB仿真
1.仿真代码
仿真代码如下:
% 仿真参数设置
nSym = 1e5; % 符号数
EbN0dB = -4:2:24; % Eb/N0范围(单位:dB)
MODU_TYPE = 'QAM'; % 调制类型
arrayM = [4,16,64,256]; % 要仿真的M值数组
plotColor = ['b','g','r','m']; % 绘图颜色
indexp = 1;
legendString = cell(1,length(arrayM)*2); % 创建cell单元格数组,用于图例条目
for n = 1:length(arrayM)
% 仿真参数初始化
M = arrayM(n);
k = log2(M);
EsN0dB = 10*log10(k)+EbN0dB; % 计算EsN0dB
SER_sim = zeros(1,length(EbN0dB)); % 仿真符号错误率
% 生成随机符号
d = randi([1 M],1,nSym);
% M-QAM基带调制
[s,ref_Constellation] = mqam_modulator(M,d);
for i = 1:length(EsN0dB)
% 经AWGN信道传输
snrdB = EsN0dB(i); % Eb/No转换为SNR
r = awgn(s,snrdB,'measured'); % 增加AWGN噪声
% 解调
d_hat = mqam_demodulator(M,r);
% 统计SER
SER_sim(i) = sum((d~=d_hat))/nSym; % SER计算
end
% 计算理论SER
[BER_theory, SER_theory] = berawgn(EbN0dB,'qam',M,'nondiff'); % MATLAB库函数
semilogy(EbN0dB,SER_sim,[plotColor(indexp) 'o']); hold on;
semilogy(EbN0dB,SER_theory,plotColor(indexp),'linewidth',1);
legendString{2*indexp-1} = ['Sim ',num2str(M),'-',MODU_TYPE];
legendString{2*indexp} = ['Theory ',num2str(M),'-',MODU_TYPE];
indexp = indexp + 1;
end
ylim([1e-6 1]);
grid on;
legend(legendString,'location','southwest');
xlabel('Eb/N0(dB)');ylabel('SER (Ps)');
title(['Probability of Symbol Error for M-',MODU_TYPE,' over AWGN']);
2.仿真结果
可见,调制阶数越高,其数据传输率越高、响应地,其频谱效率也约高。不过,调制阶数越高,其抗噪声性能越差。
六、子函数与完整代码
代码中调用了2个子函数:
(1)M-QAM调制函数
[s,ref_Constellation] = mqam_modulator(M,d);
(2)M-QAM解调函数
d_hat = mqam_demodulator(M,r);
这两个函数与完整代码,已上传至我的资源:
https://download.csdn.net/download/weixin_45333185/90066278?spm=1001.2014.3001.5503
总结
M-QAM调制是一种高效的调制方式,因为它可以在相同的带宽内传输更多的信息比特。随着M的增加,每个符号携带的比特数也增加,但这也增加了对信道的噪声和干扰的敏感性,因为相邻相位状态之间的间隔变小,更容易受到干扰。
标签:MQAM,仿真,SER,比特,符号,77,MATLAB,QAM,调制 From: https://blog.csdn.net/weixin_45333185/article/details/144172552