返回博主主页

用函数展示QPSk与16QAm的差异

当然可以!我们来通过一个简单的 Python 函数,可视化对比 QPSK 与 16QAM 的星座图(Constellation Diagram),直观展示它们在调制方式上的差异。


✅ 差异简要说明:

特性 QPSK 16QAM
每符号携带比特数 2 bit/symbol 4 bit/symbol
星座点数量 4 个 16 个
抗干扰能力 强(点间距离大) 较弱(点密集)
数据速率 较低 较高
适合信道 噪声较大 信噪比高

📊 用 Python 展示 QPSK vs 16QAM 星座图

import numpy as np
import matplotlib.pyplot as plt

def plot_qpsk_16qam():
    # ========================
    # 1. QPSK 星座图 (4点)
    # ========================
    # QPSK: 4 points at angles 45°, 135°, 225°, 315°
    qpsk_symbols = [
        complex(1, 1),   # +1+j
        complex(-1, 1),  # -1+j
        complex(-1, -1), # -1-j
        complex(1, -1)   # +1-j
    ]
    qpsk_x = [s.real for s in qpsk_symbols]
    qpsk_y = [s.imag for s in qpsk_symbols]

    # ========================
    # 2. 16QAM 星座图 (16点)
    # ========================
    # 16QAM: 4x4 网格,假设归一化到单位能量
    # 使用 -3, -1, +1, +3 作为实部和虚部的取值
    levels = [-3, -1, +1, +3]
    symbols_16qam = []
    for i in levels:
        for j in levels:
            symbols_16qam.append(complex(i, j))
    
    # 归一化能量:使平均能量为1(可选)
    energy = sum(abs(s)**2 for s in symbols_16qam) / len(symbols_16qam)
    scale = np.sqrt(10)  # 因为 16QAM 平均能量是 10,所以除以 sqrt(10)
    normalized_16qam = [s / scale for s in symbols_16qam]

    qam16_x = [s.real for s in normalized_16qam]
    qam16_y = [s.imag for s in normalized_16qam]

    # ========================
    # 3. 绘图
    # ========================
    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))

    # QPSK
    ax1.scatter(qpsk_x, qpsk_y, color='blue', s=100, edgecolors='black')
    ax1.set_title('QPSK (4-ary)', fontsize=14)
    ax1.set_xlabel('I (In-phase)')
    ax1.set_ylabel('Q (Quadrature)')
    ax1.grid(True, alpha=0.3)
    ax1.axis('equal')

    # 16QAM
    ax2.scatter(qam16_x, qam16_y, color='red', s=50, edgecolors='black')
    ax2.set_title('16QAM (16-ary)', fontsize=14)
    ax2.set_xlabel('I (In-phase)')
    ax2.set_ylabel('Q (Quadrature)')
    ax2.grid(True, alpha=0.3)
    ax2.axis('equal')

    plt.tight_layout()
    plt.show()

# 调用函数显示图形
plot_qpsk_16qam()

🔍 运行效果说明:

image

  • 左图:QPSK
    4 个点分布在圆上,对称分布,间距大 → 更抗噪声。

  • 右图:16QAM
    16 个点呈网格状排列,靠近中心的点更密集 → 单符号能传更多数据,但更容易出错。


💡 小贴士:

如果你在高信噪比环境下(比如光纤通信),用 16QAM 可以提升吞吐量;
但在无线移动场景中(如雨天、信号弱),QPSK 更可靠。


posted @ 2025-08-14 16:22  懒惰的星期六  阅读(15)  评论(0)    收藏  举报

Welcome to here

主页