当前位置:   article > 正文

【MATLAB源码-第2期】基于matlab的64QAM的理论误码率和实际误码率对比仿真,以及不同信噪比下的星座图展示。_qam误码率matalab仿真源代码

qam误码率matalab仿真源代码


1.算法描述

正交幅度调制(QAM,Quadrature Amplitude Modulation)是一种在两个正交载波上进行幅度调制的调制方式。这两个载波通常是相位差为90度(π/2)的正弦波,因此被称作正交载波。这种调制方式因此而得名。

同其它调制方式类似,QAM通过载波某些参数的变化传输信息。在QAM中,数据信号由相互正交的两个载波的幅度变化表示。

模拟信号的相位调制和数字信号的PSK可以被认为是幅度不变、仅有相位变化的特殊的正交幅度调制。由此,模拟信号频率调制和数字信号FSK也可以被认为是相位调制(PSK)的特例,因为它们本质上就是相位调制。这里主要讨论数字信号的QAM,虽然模拟信号QAM也有很多应用,例如NTSC和PAL制式的电视系统就利用正交的载波传输不同的颜色分量。

类似于其他数字调制方式,QAM发射信号集可以用星座图方便地表示。星座图上每一个星座点对应发射信号集中的一个信号。设正交幅度调制的发射信号集大小为 N,称之为N-QAM。星座点经常采用水平和垂直方向等间距的正方网格配置,当然也有其他的配置方式。数字通信中数据常采用二进制表示,这种情况下星座点的个数一般是2的幂。常见的QAM形式有16-QAM、64-QAM、256-QAM,以及未来5G采用之512-QAM及1024-QAM。星座点数越多,每个符号能传输的信息量就越大。但是,如果在星座图的平均能量保持不变的情况下增加星座点,会使星座点之间的距离变小,进而导致误码率上升。因此高阶星座图的可靠性比低阶要差。

当对数据传输速率的要求高过8-PSK能提供的上限时,一般采用QAM的调制方式。因为QAM的星座点比PSK的星座点更分散,星座点之间的距离因之更大,所以能提供更好的传输性能。但是QAM星座点的幅度不是完全相同的,所以它的解调器需要能同时正确检测相位和幅度,不像PSK解调只需要检测相位,这增加了QAM解调器的复杂性。在本文中,我们主要对64-QAM这种调制解调方式进行仿真。

2.仿真结果演示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.关键代码展示

%%%%%%主函数部分%%%%%

% 定义参数
order = 64; %调制阶数
EbN0_dB = 0:1:30; %信噪比范围
EbN0 = 10.^(EbN0_dB/10);
BER_theory = (4/6)*(1-1/8)*qfunc(sqrt(3 * 6 * EbN0 / (64 - 1))); %64QAM理论误码率计算

N = 100002; % 发送bit数目100002 确保可以被6整除,因为64QAM调制一个符号是6个bit
tx_bits = randi([0 1], 1, N); %生成发送的bit

% 创建灰度映射
gray_mapping = gray_encode_64ary;

tx_modulated_symbols = qam_modulation(tx_bits, order, gray_mapping);%64QAM调制
BER = zeros(1, length(EbN0)); %初始化误码率数组

for i = 1:length(EbN0) %循环遍历信噪比
    rx_modulated_symbols = awgn(tx_modulated_symbols, EbN0_dB(i)); %经过AWGN信道
    rx_bits = qam_demodulation(rx_modulated_symbols, order, gray_mapping); % 解调
    BER(i) = sum(tx_bits ~= rx_bits) / N; % 计算误码率
end

% 星座图
figure(1);
scatter(real(tx_modulated_symbols), imag(tx_modulated_symbols),'ro','filled');
title('发射端64QAM星座图');
grid on;

figure(2);
scatter(real(rx_modulated_symbols), imag(rx_modulated_symbols));
title('接收端64QAM星座图');
grid on;

% 绘制误码率曲线
figure(3);
semilogy(EbN0_dB, BER, 'bo-', EbN0_dB, BER_theory, 'rs-');
xlabel('SNR (dB)');
ylabel('BER');
title('64QAM实际误码率曲线与理论误码率曲线对比');
legend( '64QAM (仿真)', '64QAM (理论)');
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

4.MATLAB源码获取

v
点击下方名片

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/400714
推荐阅读
相关标签
  

闽ICP备14008679号