MATLAB函数详解系列二、MQAM星座图映射归一化qammod函数

一、如何计算归一化功率

我们知道归一化符号Es均等于1,但是如何实现如下归一化符号计算呢

BPSK 映射星座图需要除以总功率1

4QAM映射星座图需要除以总功率\sqrt{2}

8QAM映射星座图需要除以总功率\sqrt{6}

16QAM映射星座图需要除以总功率\sqrt{10}

32QAM映射星座图需要除以总功率\sqrt{20}

64QAM映射星座图需要除以总功率\sqrt{42}

128QAM映射星座图需要除以总功率\sqrt{82}

256QAM映射星座图需要除以总功率\sqrt{170}

那么这些是怎么计算的呢!这是饿哦直接截取的别人文章的,计算公式,同时按照惯例还是给大家推荐干货文章

文章一、星座图归一化计算公式


二、matlab中实现方法

这是matlab中 实现的方法以及公式,个人觉得的还是比较简单的

function averagePower = getAveragePower(M)
    % COMM.INTERNAL.QAM.GETAVERAGEPOWER(M) Get the average power of a QAM
    % constellation with minimum distance of 2 between points, and
    % modulation order M.
    %
    % AVERAGEPOWER = COMM.INTERNAL.QAM.GETAVERAGEPOWER(M)
    % M must be an integer power of 2. Note that this internal function
    % does not perform any input validation. It is user's responsibility to
    % ensure that the above conditions are met.

    %    Copyright 2015-2017 The MathWorks, Inc.
    
    %#codegen
    
    nBits = log2(M);
    if M==2 || M==8
        averagePower = ( (5*M/4) - 1 ) * 2/3;
    elseif mod(nBits,2)
        % Cross QAM
        averagePower = ( (31*M/32) - 1 ) * 2/3;        
    else
        % Square QAM
        averagePower = (M - 1) * 2/3;
    end
end

可以看得出的是 除了M=2或者8的时候  其他分为M为2的奇次或者偶次幂,来进行计算的

### 符号映射星座图在数字通信系统中的作用 在数字通信系统中,符号映射是指将待传输的信息比特序列转换成特定的调制符号的过程。这些符号通过载波信号的不同状态表示出来,在接收端再被解码回原始数据。为了有效地利用频谱资源并提高抗干扰能力,现代无线通信广泛采用多进制调制技术。 星座图作为一种直观工具用于描述这种调制方式下的各个可能发送符号的位置分布情况。它以笛卡尔坐标系的形式展示,其中横轴通常标记为 I (In-phase, 同相),而纵轴则标记为 Q (Quadrature, 正交)[^1]。对于给定类型的调制方案而言,比如文中提到的64QAM(六十四阶正交振幅调制),其对应的星座图上会均匀散布着64个离散点,每一个都对应一组唯一的进制编码组合,并且代表着不同的幅度和相位信息。 当从一个点移动至另一点时,则意味着进行了相应的相位变化以及幅度调整操作,从而实现了复杂的数据传输过程。 ### 实现方法 #### 构建星座图 构建星座图的第一步是定义所需的调制模式及其参数设置。例如,在64QAM的情况下,需要创建一个由64个独特位置组成的网格结构。每个位置不仅决定了所关联的进制字符串,还规定了该状态下发射机应产生的实际电压电平或功率水平。 ```python import numpy as np import matplotlib.pyplot as plt def generate_constellation_points(M): """Generate constellation points for M-QAM.""" sqrt_M = int(np.sqrt(M)) real_part = np.linspace(-sqrt_M + 1, sqrt_M - 1, num=sqrt_M) imag_part = np.linspace(-sqrt_M + 1, sqrt_M - 1, num=sqrt_M) constellations = [] for r in real_part: for i in imag_part: constellations.append(complex(r, i)) return np.array(constellations) / max(abs(real_part)) * np.sqrt(2) M = 64 constellation_points = generate_constellation_points(M) plt.figure(figsize=(8, 8)) plt.scatter(constellation_points.real, constellation_points.imag) plt.title('Constellation Diagram of {}-QAM'.format(M), fontsize=14) plt.xlabel('Real part', fontsize=12) plt.ylabel('Imaginary part', fontsize=12) plt.grid(True) plt.show() ``` 此代码片段展示了如何生成并绘制64QAM的星座图。这里采用了标准化处理使得所有点位于单位圆内部,以便更好地理解各点之间的相对距离关系。 #### 数据映射流程 一旦建立了合适的星座图模型之后,下一步就是设计具体的算法来完成从输入比特流到相应星座点的选择工作。这一过程中涉及到的关键步骤包括但不限于: - **灰度编码**:确保相邻两个符号间仅有单一位发生变化,以此减少误判概率; - **查找表(LUT)**:预先计算好每种情况下应该选取哪个星座点作为输出结果; - **逆快速傅立叶变换(IFFT)** 或者其他形式的时间域/频率域转换机制,用来最终形成可以物理上传输的模拟信号波形。 综上所述,符号映射星座图共同构成了高效可靠的数字通信体系不可或缺的一部分,它们之间紧密配合才能保障高质量的信息传递服务得以实现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

科研Beatles

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值