【数字通信】Matlab实现16QAM调制与解调,判决,误码率计算

简介: 【数字通信】Matlab实现16QAM调制与解调,判决,误码率计算

 1 简介

多进制正交幅度调制,结合了幅度和相位两个要素,信号均匀分布,频谱利用率高.文中介绍了正交幅度调制解调原理,通过系统仿真实验,对16QAM的调制解调过程,原理进行了论证分析,给出了高斯白噪声干扰下的误码率.仿真实验结果说明了,多进制正交幅度调制解调功率,带宽高效,易于实现,误码率低,抗干扰能力强.

2 部分代码

clc;clear;%% 长度N(1 -1)比特序列产生N = 4e4;             %设置比特序列的长度t = 1:1:N;data = randi(2,1,N)-1;% data = [1 1 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 1 1 1];figure(1)plot(data(1:40),'*')axis([0 41 -0.2 1.2])title('图1 原始数据序列');xlabel('t');ylabel('数据值');grid on;%% 16QAM调制data_modu = QAM16_modu( data );figure(2)subplot(2,1,1)plot(real(data_modu(1:10)),'*');title('图2-1 16QAM调制数据的实部');xlabel('t');ylabel('数据值');axis([0 11 -4 4]);grid on;subplot(2,1,2)plot(imag(data_modu(1:10)),'*')title('图2-2 16QAM调制数据的虚部');xlabel('t');ylabel('数据值');axis([0 11 -4 4]);grid on;%% 8倍插值data_upsam = upsample(data_modu,8);figure(3)subplot(2,1,1);plot(real(data_upsam(1:80)),'*');title('图3-1 16QAM调制数据8倍插值后的实部');xlabel('t');ylabel('数据值');axis([0 81 -4 4]);grid on;subplot(2,1,2);plot(imag(data_upsam(1:80)),'*')title('图3-2 16QAM调制数据8倍插值后的虚部');xlabel('t');ylabel('数据值');axis([0 81 -4 4]);grid on;%% 设置均方根升余弦滤波器的参数beta = 0.25;span = 6;sps  = 4;b = rcosdesign(beta, span, sps, 'sqrt');%% 发射端均方根成型滤波——低通滤波data_low1 = conv(data_upsam, b);figure(4)subplot(2,1,1)% span*sps/2+1   data_low1(1:80)plot(real(data_low1((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);title('图4-1 发射端低通滤波后的实部');xlabel('t');ylabel('数据值');% axis([span*sps/2+1 span*sps/2+80 -2 2]);grid on;subplot(2,1,2)plot(imag(data_low1((span*sps/2+1):(span*sps/2+80))),'LineWidth',1)title('图4-2 发射端低通滤波后的虚部');xlabel('t');ylabel('数据值');% axis([span*sps/2+1 span*sps/2+80 -2 2]);grid on;%% 信道加性高斯白噪声%SNR与EbN0之间的关系SNR = EbN0 + 10log10(NBits * Coderate) - 10log10(0.5or1 * upfactor)BER = zeros(1,15);NBits = 4;Coderate = 1;upfactor = 8;% for EbN0 = 1:1:15EbN0 = 10;SNR = EbN0 + 10*log10(NBits * Coderate) - 10*log10(1 * upfactor);data_awgn = awgn(data_low1,SNR,'measured');figure(5)subplot(2,1,1)plot(real(data_low1((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);hold on;plot(real(data_awgn((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);title('图5-1 加噪声前后数据的实部');xlabel('t');ylabel('数据值');legend('噪声前','噪声后');% axis([span*sps/2+1 span*sps/2+80 -4 4]);grid on;subplot(2,1,2)plot(imag(data_low1((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);hold on;plot(imag(data_awgn((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);title('图5-2 加噪声前后数据的虚部');xlabel('t');ylabel('数据值');legend('噪声前','噪声后');% axis([span*sps/2+1 span*sps/2+80 -4 4]);grid on;%% 接收端均方根滤波——低通滤波data_low2 = conv(data_awgn, b);% data_low2 = conv(data_low1, b);data_window = data_low2( (span*sps+1):(span*sps+length(data_upsam)) );figure(6)subplot(2,1,1)plot(real(data_low1((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);hold on;plot(real(data_awgn((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);plot(real(data_window(1:80)),'LineWidth',1);title('图6-1 加噪声及滤波前后数据的实部');xlabel('t');ylabel('数据值');legend('噪声前','噪声后','滤波后');grid on;subplot(2,1,2)plot(imag(data_low1((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);hold on;plot(imag(data_awgn((span*sps/2+1):(span*sps/2+80))),'LineWidth',1);plot(imag(data_window(1:80)),'LineWidth',1);title('图6-2 加噪声及滤波前后数据的虚部');xlabel('t');ylabel('数据值');legend('噪声前','噪声后','滤波后');grid on;%% 1/8倍采样data_downsam = downsample(data_window,8,0);figure(7)subplot(4,1,1);[f2,xi2] = ksdensity(real(data_modu));    %发射信号实部的PDFplot(xi2,f2);title('发射端16QAM调制之后信号实部的pdf');axis([-5 5 0 0.3])grid on;subplot(4,1,2);[f22,xi22] = ksdensity(imag(data_modu));  %发射信号实部的PDFplot(xi22,f22);title('发射端16QAM调制之后信号虚部的pdf');axis([-5 5 0 0.3])grid on;subplot(4,1,3)[f7,xi7] = ksdensity(real(data_downsam)); %接收信号实部的PDFplot(xi7,f7);title('接收端下采样之后信号实部的pdf');axis([-5 5 0 0.3])grid on;subplot(4,1,4)[f72,xi72] = ksdensity(imag(data_downsam)); %接收信号虚部的PDFplot(xi72,f72);title('接收端下采样之后信号虚部的pdf');axis([-5 5 0 0.3])grid on;%% 16QAM星座点判决data_Judge = QAM16_Euclid_Judge( data_downsam );%% 16QAM解调data_demodu = QAM16_demodu( data_Judge );figure(8)subplot(2,1,1)plot(data(1:40),'*');axis([0 41 -0.2 1.2])title('图8-1 原始数据序列');xlabel('t');ylabel('数据值');grid on;subplot(2,1,2)plot(data_demodu(1:40),'*');axis([0 41 -0.2 1.2])title('图8-2 接收数据序列');xlabel('t');ylabel('数据值');grid on;% %% 解调数据与原始数据比较并计算误码率% n = length(find(data_demodu-data));% BER(EbN0) = n/N% end% %% 求得理论误比特率% EbN0 = 1:1:15% BER0 = berawgn(EbN0,'qam',16);% % %% 理论误比特率与仿真误比特率的比较% figure(9)% semilogy(EbN0,BER,'-o','LineWidth',1);% hold on;% semilogy(EbN0,BER0,'-o','LineWidth',1);% xlabel('EbN0 / dB');% ylabel('BER');% title('图9 理论误比特率与仿真误比特率的比较')% legend('实际BER','理论BER');% grid on;

3 仿真结果

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

4 参考文献

[1]丁业兵, 王子武, 谭学琴. 16QAM通信系统的MATLAB实现[J]. 微型电脑应用, 2017, 33(2):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

5 代码下载

相关文章
基于粒子滤波器的电池剩余使用寿命计算matlab仿真
本研究基于粒子滤波器预测电池剩余使用寿命(RUL),采用MATLAB2022a实现。通过非线性动力学模型模拟电池老化过程,利用粒子滤波器处理非线性和非高斯问题,准确估计电池SOH变化趋势,进而预测RUL。系统仿真结果显示了良好的预测性能。
|
3月前
|
算法 5G 数据安全/隐私保护
大规模MIMO通信系统信道估计matlab性能仿真,对比LS,OMP,MOMP以及CoSaMP
本文介绍了大规模MIMO系统中的信道估计方法,包括最小二乘法(LS)、正交匹配追踪(OMP)、多正交匹配追踪(MOMP)和压缩感知算法CoSaMP。展示了MATLAB 2022a仿真的结果,验证了不同算法在信道估计中的表现。最小二乘法适用于非稀疏信道,而OMP、MOMP和CoSaMP更适合稀疏信道。MATLAB核心程序实现了这些算法并进行了性能对比。以下是部分
270 84
|
14天前
|
算法 数据安全/隐私保护
数字通信中不同信道类型对通信系统性能影响matlab仿真分析,对比AWGN,BEC,BSC以及多径信道
本项目展示了数字通信系统中几种典型信道模型(AWGN、BEC、BSC及多径信道)的算法实现与分析。使用Matlab2022a开发,提供无水印运行效果预览图、部分核心代码及完整版带中文注释的源码和操作视频。通过数学公式深入解析各信道特性及其对系统性能的影响。
|
2月前
|
算法
MATLAB符号计算
【10月更文挑战第9天】MATLAB不仅擅长数值计算,还具备强大的符号计算功能,支持代数运算、方程求解、微积分等。本文介绍如何使用MATLAB的符号工具箱进行符号变量定义、方程求解、微分积分及矩阵运算,并通过多个实际应用案例展示了其在机械系统、电路分析、经济优化和物理运动学等领域的应用。此外,文章还提供了符号计算的最佳实践和未来展望。
77 2
|
2月前
|
算法 5G 数据安全/隐私保护
MIMO系统中差分空间调制解调matlab误码率仿真
本项目展示了一种基于Matlab 2022a的差分空间调制(Differential Space Modulation, DMS)算法。DMS是一种应用于MIMO通信系统的信号传输技术,通过空间域的不同天线传输符号序列,并利用差分编码进行解调。项目包括算法运行效果图预览、核心代码及详细中文注释、理论概述等内容。在发送端,每次仅激活一个天线发送符号;在接收端,通过差分解调估计符号和天线选择。DMS在快速衰落信道中表现出色,尤其适用于高速移动和卫星通信系统。
|
2月前
|
固态存储
螺旋卫星通信天线设计与有限元分析matlab仿真
本课题研究了尺寸为10cm*10cm*30cm的卫星上搭载的螺旋型天线,工作于UHF频段(1-3GHz)。通过MATLAB2022a进行系统仿真,展示了天线的辐射特性。螺旋天线因其低轴比、宽带宽和紧凑结构而适用于卫星通信。采用有限元法分析天线的电磁性能,计算了天线的关键性能指标,包括S参数、增益、轴比等。
|
2月前
|
安全 调度
电力系统的负荷损失和潮流计算matlab仿真,对比最高度数,最高介数以及最高关键度等节点攻击
本课题研究节点攻击对电力系统稳定性的影响,通过模拟最高度数、最高介数和最高关键度攻击,对比不同攻击方式下的停电规模。采用MATLAB 2022a 进行系统仿真,核心程序实现线路断开、潮流计算及优化。研究表明,节点攻击会导致负荷损失和系统瘫痪,对电力系统的安全构成严重威胁。通过分析负荷损失率和潮流计算,提出减少负荷损失的方法,以提升电力系统的稳定性和安全性。
|
2月前
|
编解码 算法 数据安全/隐私保护
基于BP译码的LDPC误码率matlab仿真,分析码长,码率,信道对译码性能的影响,对比卷积码,turbo码以及BCH码
本程序系统基于BP译码的LDPC误码率MATLAB仿真,分析不同码长、码率、信道对译码性能的影响,并与卷积码、Turbo码及BCH编译码进行对比。升级版增加了更多码长、码率和信道的测试,展示了LDPC码的优越性能。LDPC码由Gallager在1963年提出,具有低复杂度、可并行译码等优点,近年来成为信道编码研究的热点。程序在MATLAB 2022a上运行,仿真结果无水印。
59 0
|
3月前
|
算法 数据可视化 数据安全/隐私保护
基于LK光流提取算法的图像序列晃动程度计算matlab仿真
该算法基于Lucas-Kanade光流方法,用于计算图像序列的晃动程度。通过计算相邻帧间的光流场并定义晃动程度指标(如RMS),可量化图像晃动。此版本适用于Matlab 2022a,提供详细中文注释与操作视频。完整代码无水印。
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
216 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码