首页 > 其他分享 >(77)MQAM基带调制通信系统awgn信道传输性能的MATLAB仿真

(77)MQAM基带调制通信系统awgn信道传输性能的MATLAB仿真

时间:2024-12-07 16:00:57浏览次数:9  
标签:MQAM 仿真 SER 比特 符号 77 MATLAB QAM 调制

文章目录


前言

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

相关文章

  • MATLAB 在制冷循环建模中的应用:原理、方法与案例解析 
     一、制冷循环基础与MATLAB建模的意义 制冷循环是通过消耗能量将热量从低温区域转移到高温区域的过程,常见的制冷循环包括蒸气压缩式制冷循环等。在制冷系统的设计、优化与性能分析中,精确的建模至关重要。MATLAB作为一款强大的科学计算与工程仿真软件,为制冷循环建模提供......
  • GNGN77
    ###nixie_tube.h```c#ifndef_NIXIE_TUBE_H#define_NIXIE_TUBE_H#include"main.h"/****************************** define ******************************/#defineSTB_H HAL_GPIO_WritePin(STB_GPIO_Port,STB_Pin,GPIO_PIN_SET)#defineSTB_L HAL_GPIO_Wri......
  • 基于方块编码的图像压缩matlab仿真,带GUI界面
    1.算法运行效果图预览(完整程序运行后无水印) 下图是随着方块大小的变化,图像的压缩率以及对应的图像质量指标PSNR的变化趋势曲线。 2.算法运行软件版本matlab2022a 3.部分核心程序(完整版代码包含详细中文注释和操作步骤视频)figure;subplot(121);plot(sets,tr......
  • 基于WOA鲸鱼优化的购售电收益与风险评估算法matlab仿真
    1.课题概述      基于WOA鲸鱼优化的购售电收益与风险评估算法.WOA优化算法是一种基于鲸鱼捕食过程的仿生优化算法,其包括鲸鱼行走觅食、鲸鱼包围以及鲸鱼螺旋捕食三个步骤。在WOA优化算法中,将售电公司的购售电收益风险计算公式作为WOA优化算法的目标函数,然后通过WOA的迭代......
  • 【日记】我们行发工资真的就是 Black Box……(577 字)
    正文今天头好油……昨天应酬完了实在太晚,就没洗澡。现在的头简直没法看……回想了一下,今天好像什么都没干。字面意义上的。今天新行长下来,带了一堆东西。去帮了忙。他看见我还一愣。估计是头太油了…….发工资了。市分行的同事问我怎么比跟我同一批进来的人高那么多。你问我我......
  • 【饮料检测】机器视觉饮料质量检测系统【含GUI Matlab源码 9729期】
    ......
  • 【语音分析】语音信号短时分析(含自相关 能量谱 过零率)【含GUI Matlab源码 9728期】
    ......
  • P10977 Cut the Sequence
    P10977CuttheSequence看到题目我们不难想到动态规划,对于每一个点\(a_i\)可以求一个\(pre_i\)满足$\forallj\in[pre_i+1,i]$$a_l\lea_i$且$a_i<a_{pre_i}$用人话说就是从\(i\)往前数第一个大于\(a_i\)的数,然后我们可以对于\(a_i\)求一个前缀和,这样就能......
  • 使用 MATLAB 绘制三维散点图:根据坐标和距离映射点的颜色和大小
    在数据可视化中,三维散点图是一种非常直观的方式来展示数据的分布。MATLAB提供了强大的scatter3函数,可以用来绘制三维散点图,而通过调整点的颜色和大小,可以进一步增强图形的表现力。在本篇博客中,我们将逐步讲解如何使用MATLAB读取Excel文件中的数据,并绘制四个子图。每个......
  • WRF报错Land Use Dataset ‘‘ not found in VEGPARM.TBL. 解决方案(MATLAB版)
    #WRF模式LandUseDataset''notfoundinVEGPARM.TBL.报错情况最近在使用WRF(-Chem)v4.4.2时,因为需要进行化学场的spinup,涉及到使用之前模拟的结果作为模拟的初始(化学)场,前面real等步骤的执行都无异样,但是正式运行wrf.exe时,很快就出现了停止,查询rsl.erro.0000,出现如下报......