文章目录

  • 0. 作业要求
  • 1. 概述
    • 1.1 背景知识
      • 1.1.1 数字传输系统
      • 1.1.2 数字基带传输系统
        • 发射机(脉冲调制)
          • 线路编码
          • 窄脉冲生成器
          • 发送滤波器
        • 信道(AWGN信道)
        • 接收机(检测)
          • 接收滤波器
          • 抽样器
          • 判决器
      • 1.1.3 数字频带传输系统
        • 信道(带限AWGN信道)
    • 1.2 研究问题
  • 2. 系统模型
    • 2.1 信号带宽无限时的单极性基带传输系统模型
      • 2.1.1 不归零码(NRZ)
      • 2.1.2 归零码(RZ, 50%)
      • 2.1.3 升余弦传输(RC)
    • 2.2 信号带宽受限时的双极性基带传输系统模型
      • 2.2.1 不归零码(NRZ)
      • 2.2.2 归零码(RZ, 50%)
      • 2.2.3 升余弦传输(RC)
    • 2.3 信道带宽受限时的 QPSK 传输系统模型
    • 2.4 信道带宽受限时的 16QAM 传输系统模型
  • 3. 误码性能分析
    • 3.1 信道带宽无限时的单极性基带传输
    • 3.2 信道带宽受限时的双极性基带传输
    • 3.3 信道带宽受限时的QPSK传输
    • 3.4 信道带宽受限时的16QAM传输
  • 4. 仿真模型与仿真过程
    • 4.1 数字基带传输系统
      • 4.1.1 仿真模型
      • 4.1.2 仿真过程
        • 4.1.2.1 待发射信号的二进制比特序列与脉冲序列
        • 4.1.2.2 信道中的信号与通过接收滤波器的信号
          • 4.1.2.2.1 单极性不归零带宽无限系统
          • 4.1.2.2.2 单极性不归零带宽受限系统
          • 4.1.2.2.3 单极性归零带宽无限系统
          • 4.1.2.2.4 单极性归零带宽受限系统
          • 4.1.2.2.5 单极性升余弦带宽无限系统
          • 4.1.2.2.6 单极性升余弦带宽受限系统
          • 4.1.2.2.7 双极性不归零带宽无限系统
          • 4.1.2.2.8 双极性不归零带宽受限系统
          • 4.1.2.2.9 双极性归零带宽无限系统
          • 4.1.2.2.10 双极性归零带宽受限系统
          • 4.1.2.2.11 双极性升余弦带宽无限系统
          • 4.1.2.2.12 双极性升余弦带宽受限系统
        • 4.1.2.3 抽样保持后的的序列与判决后的序列
          • 4.1.2.3.1 单极性不归零带宽无限系统
          • 4.1.2.3.2 单极性不归零带宽受限系统
          • 4.1.2.3.3 单极性归零带宽无限系统
          • 4.1.2.3.4 单极性归零带宽受限系统
          • 4.1.2.3.5 单极性升余弦带宽无限系统
          • 4.1.2.3.6 单极性升余弦带宽受限系统
          • 4.1.2.3.7 双极性不归零带宽无限系统
          • 4.1.2.3.8 双极性不归零带宽受限系统
          • 4.1.2.3.9 双极性归零带宽无限系统
          • 4.1.2.3.10 双极性归零带宽受限系统
          • 4.1.2.3.11 双极性升余弦带宽无限系统
          • 4.1.2.3.12 双极性升余弦带宽受限系统
    • 4.2 数字频带传输系统-带宽受限 QPSK 传输
      • 4.2.1 仿真模型
      • 4.2.2 仿真过程
        • 4.2.2.1 QPSK-待传输信号的二进制比特序列
        • 4.2.2.2 QPSK-待传输信号的基带波形与频带波形
        • 4.2.2.3 QPSK-信道传输波形
        • 4.2.2.4 QPSK-接收机解调波形
        • 4.2.2.5 QPSK-接收机归一化接收波形
        • 4.2.2.6 QPSK-接收机抽样序列
        • 4.2.2.7 QPSK-接收的二进制序列
    • 4.3 数字频带传输系统-带宽受限 16QAM 传输
      • 4.3.1 仿真模型
      • 4.3.2 仿真过程
        • 4.2.3.1 16QAM-待传输信号的比特与符号序列
        • 4.2.3.2 16QAM-待传输信号的基带波形与频带波形
        • 4.2.3.3 16QAM-信道传输波形
        • 4.2.3.4 16QAM-接收机解调波形
        • 4.2.3.5 16QAM-接收机归一化接收波形
        • 4.2.3.6 16QAM-接收机抽样序列
        • 4.2.3.7 16QAM-接收的二进制序列
  • 5. 仿真结果与分析
    • 5.1 数字基带传输系统
      • 5.1.1 仿真结果
        • 5.1.1.1 有噪单极性不归零带宽无限系统
        • 5.1.1.2 有噪单极性不归零带宽受限系统
        • 5.1.1.3 有噪单极性归零带宽无限系统
        • 5.1.1.4 有噪单极性归零带宽受限系统
        • 5.1.1.5 有噪单极性升余弦带宽无限系统
        • 5.1.1.6 有噪单极性升余弦带宽受限系统
        • 5.1.1.7 有噪双极性不归零带宽无限系统
        • 5.1.1.8 有噪双极性不归零带宽受限系统
        • 5.1.1.9 有噪双极性归零带宽无限系统
        • 5.1.1.10 有噪双极性归零带宽受限系统
        • 5.1.1.11 有噪双极性升余弦带宽无限系统
        • 5.1.1.12 有噪双极性升余弦带宽受限系统
      • 5.1.2 仿真结果分析
        • 信道带宽无限时单极性基带传输
        • 信道带宽受限时的双极性基带传输
    • 5.2 数字频带传输系统-QPSK
      • 5.2.1 仿真结果
      • 5.2.2 仿真结果分析
    • 5.3 数字频带传输系统-16QAM
      • 5.3.1 仿真结果
      • 5.3.2 仿真结果分析
  • 6. 结论
  • 7. 参考资料
  • 8. 附录
    • 8.1 环境依赖
    • 8.2 仿真顶层程序 `DTS-sim`
    • 8.3 实用程序 `utils.py`
    • 8.4 数字基带系统仿真模块 `baseBand.py`
    • 8.5 数字频带系统仿真模块 `frequencyBand.py`
    • 8.6 数字基带传输系统仿真结果数据
    • 8.7 数字频带传输系统仿真结果数据-QPSK
    • 8.8 数字频带传输系统仿真结果数据-16QAM

0. 作业要求


1. 概述

1.1 背景知识

1.1.1 数字传输系统

数字传输系统通用模型如下图所示

图1.1.1.1 数字传输系统通用模型

  • 信源: 信源是消息的来源, 输出的是消息(或符号), 一般需要将其转换为电信号输出
  • 信源编码: 信源编码是对信源输出的电信号用尽量低速率的二进制数字信号表示, 减少消息剩余度, 输出二进制数字序列(信息序列)
  • 信道编码: 信道编码为(二进制)信息序列引入剩余度, 以提高信息传输的可靠性, 输出二进制数字序列
  • 脉冲调制: 又称为基带调制, 由数字脉冲调试器实现
    • 数字脉冲调制器: 将数字序列映射为适合基带信道传输的脉冲波形的数字调制器, 输出数字基带信号

      • 数字基带信号: 信号波形的功率谱为低通型, 只有直流或低频成分, 带宽有限的数字信号
    • 数字调制器有二进制与M进制两种
      • 二进制数字调制器: 将二进制数字序列中的二进制符号0映射为信号波形 s1(t)s_1(t)s1​(t), 将二进制符号1映射为信号波形 s2(t)s_2(t)s2​(t)
      • M进制数字调制器: 将二进制数字序列中的K个二进制符号映射为 M=2KM=2^KM=2K 个不同信号的波形 si(t),i=1,2,⋯Ms_i(t), i=1, 2, \cdots Msi​(t),i=1,2,⋯M
  • 带通调制: 将基带信号进行上变频, 搬移到载频上成为频带信号, 输入基带波形, 输出频带波形
    • 数字基带传输系统没有该模块
  • 信道: 数字信号的信道分为基带信道(低通信道)带通信道
    • 基带信道: 传递函数为低通型, 适合传送脉冲信号, 例如同轴电缆与双绞线
    • 带通信道: 传递函数为带通型, 适合传送带通信号, 例如无线通信与光通信
  • 带通解调: 将频带信号进行下变频, 搬移到基频上成为基带信号, 输入频带波形, 输出基带波形
    • 数字基带传输系统没有该模块
  • 检测: 将基带信号波形中的二进制数字序列提取出来
    • 由于噪声干扰的影响,其输出的二进制数字序列与原始二进制数字序列不完全相同, 即出现传输错误
  • 信道译码: 去掉二进制数字序列中的冗余比特, 实现检错或者纠错功能
  • 信源译码: 恢复原始消息

根据是否进行带通调制与带通解调可将数字传输系统分为数字基带传输系统数字频带传输系统

  • 数字基带传输系统: 将数字基带信号通过基带信道传输的系统, 不进行带通调制与带通解调
  • 数字频带传输系统: 将数字基带信号通过频带调制器进行带通调制, 搬移到载频上成为带通信号, 通过带通信道传输, 再通过频带解调器进行带通解调, 恢复成数字基带信号的传输系统

1.1.2 数字基带传输系统

图1.1.2.1 数字基带传输系统模型

图1.1.2.2 发送滤波器冲激响应与生成波形示意图


发射机(脉冲调制)

将自信源的二进制随机序列 {bn}\{b_n\}{bn​} 变为信号波形 s(t)s(t)s(t)


线路编码

将二进制随机序列 {bn}\{b_n\}{bn​} 映射为电平 {an}\{a_n\}{an​}

  • 单极性码: 将“0”映射为零电平, “1”映射为正电平
  • 双极性码: 将“0”映射为负电平, “1”映射为正电平

窄脉冲生成器

产生间隔为 TsT_sTs​ 的冲激序列, 如 图1.1.2.2

图1.1.2.2 窄脉冲生成器示意图

  • 输入: 电平 {an}\{a_n\}{an​}
  • 输出: 冲激序列
    m(t)=∑n=−∞∞anδ(t−nTs)(1.1.2.1)m(t) = \sum_{n=-\infty}^{\infty} a_n \delta(t-n T_s) \tag{1.1.2.1} m(t)=n=−∞∑∞​an​δ(t−nTs​)(1.1.2.1)

    • 码元间隔: TsT_sTs​, 每个码元所对应的传输时间
    • 码元传输速率: rs=1Tsr_s = \frac{1}{T_s}rs​=Ts​1​, 单位时间内传输码元数量

发送滤波器

产生信号发送波形 s(t)s(t)s(t)

  • 输入: 冲激序列 m(t)m(t)m(t)
  • 输出: 信号波形
    s(t)=∑n=−∞∞angT(t−nTs)(1.1.2.2)s(t) = \sum_{n=-\infty}^{\infty} a_n g_T(t-n T_s) \tag{1.1.2.2} s(t)=n=−∞∑∞​an​gT​(t−nTs​)(1.1.2.2)

    • 发送滤波器的冲激响应: gT(t)g_T(t)gT​(t)
    • 发送滤波器的系统响应函数: GT(f)G_T(f)GT​(f)

信道(AWGN信道)

发射机产生的发送信号经过信道进入接收机

图1.1.2.3 频带无限与频带有限信道的频率传函示意图

  • 带宽无限AWGN信道: 信道的频率传递函数 C(f)C(f)C(f) 在整个频率上是常数, 发送信号 s(t)s(t)s(t) 通过 C(f)C(f)C(f) 过程中时域波形不会发生形状上的变化, 接收信号为
    r(t)=s(t)+nw(t)(1.1.2.3)r(t) = s(t) + n_w(t) \tag{1.1.2.3} r(t)=s(t)+nw​(t)(1.1.2.3)
  • 带宽有限AWGN信道: 信道的频率传递函数 C(f)C(f)C(f) 近似于理想低通滤波器的系统函数, 发送信号 s(t)s(t)s(t) 通过 C(f)C(f)C(f) 过程中信号的高频成分将被滤掉, 接收信号为
    r(t)=s(t)∗c(t)+nw(t)(1.1.2.4)r(t) = s(t) * c(t) + n_w(t) \tag{1.1.2.4} r(t)=s(t)∗c(t)+nw​(t)(1.1.2.4)

接收机(检测)

将来自信道的接收波形 r(t)r(t)r(t) 恢复成二进制序列 {bn^}\{\hat{b_n}\}{bn​^​}, 理想情况下 {bn^}\{\hat{b_n}\}{bn​^​} 与 {bn}\{b_n\}{bn​} 应完全相同, 实际传输过程中由于噪声等影响, 会发生误码


接收滤波器

为使抽样器在最佳采样时刻 t0t_0t0​ 的信噪比最大, 进而使判决器使用合适的判决门限 VTV_TVT​ 进行判决后平均误比特率最小(最佳接收), 需要使用匹配滤波器(MF)或相关接收机

  • 匹配滤波器: 在最佳采样时刻 t=t0t = t_0t=t0​ 使滤波器的输出信号 yMF(t)y_{MF}(t)yMF​(t) 的瞬时功率与输出噪声的平均功率之比(输出信噪比)最大的线性滤波器
    y(t)=r(t)∗hMF(t)=(si(t)+nw(t))∗hMF(t)=so(t)+no(t)(1.1.2.5)\begin{aligned} y(t) &= r(t) * h_{MF}(t) \\ &= (s_i(t) + n_w(t)) * h_{MF}(t) \\ &= s_o(t) + n_o(t) \\ \end{aligned} \tag{1.1.2.5} y(t)​=r(t)∗hMF​(t)=(si​(t)+nw​(t))∗hMF​(t)=so​(t)+no​(t)​(1.1.2.5)

    • 物理可实现的匹配滤波器
      hMF(t)=K⋅si(Ts−t)(1.1.2.6)h_{MF}(t) = K \cdot s_i(T_s - t) \tag{1.1.2.6} hMF​(t)=K⋅si​(Ts​−t)(1.1.2.6)
  • 相关接收机: 对接收信号的与其自己的乘积进行积分, 输出信号 yCR(t)y_{CR}(t)yCR​(t) 满足 yCR(t0)=yMF(t0)y_{CR}(t_0) = y_{MF}(t_0)yCR​(t0​)=yMF​(t0​)
    y(t)=s(t)∗h(t)=∫−∞∞h(α)⋅s(t−α)=∫0TK⋅s(Ts−α)⋅s(t−α)=K⋅Rs(t−Ts)(1.1.2.7)\begin{aligned} y(t) &= s(t) * h(t) \\ &= \int_{-\infty}^{\infty} h(\alpha) \cdot s(t - \alpha) \\ &= \int_{0}^{T} K \cdot s(T_s - \alpha) \cdot s(t - \alpha) \\ &= K \cdot R_{s}(t - T_s) \\ \end{aligned} \tag{1.1.2.7} y(t)​=s(t)∗h(t)=∫−∞∞​h(α)⋅s(t−α)=∫0T​K⋅s(Ts​−α)⋅s(t−α)=K⋅Rs​(t−Ts​)​(1.1.2.7)

抽样器

在接收滤波器输出信号的输出信噪比最大的时刻(最佳采样时刻) t=t0t = t_0t=t0​ 对接收滤波器的输出信号进行采样
y=y(t0)(1.1.2.8)y = y(t_0) \tag{1.1.2.8} y=y(t0​)(1.1.2.8)


判决器

对抽样器经过抽样获得的序列 {y}\{y\}{y} 与判决门限 VTV_TVT​ 进行比较, 根据比较结果输出 b^=1\hat{b} = 1b^=1 或 b^=0\hat{b} = 0b^=0, 形成输出比特序列 {b^}\{\hat{b}\}{b^}


1.1.3 数字频带传输系统

图1.1.3.1 数字频带传输系统模型

将数字基带信号通过频带调制器进行带通调制, 搬移到载频上成为带通信号, 通过带通信道传输, 再通过频带解调器进行带通解调, 恢复成数字基带信号的传输系统即为数字频带传输系统.


信道(带限AWGN信道)

  • 带通有限AWGN信道: 信道的频率传递函数 C(f)C(f)C(f) 近似于理想带通滤波器的系统函数, 发送信号 s(t)s(t)s(t) 通过 C(f)C(f)C(f) 过程中信号的阻带成分将被滤掉, 接收信号为
    r(t)=s(t)∗c(t)+nw(t)(1.1.3.1)r(t) = s(t) * c(t) + n_w(t) \tag{1.1.3.1} r(t)=s(t)∗c(t)+nw​(t)(1.1.3.1)

1.2 研究问题

针对信道带宽无限的单极性基带基带传输系统信号带宽受限的双极性基带传输系统, 采用匹配滤波器(相关接收机), 对误码性能进行仿真:

  • 选择系统模型, 对系统模型进行分析, 推导误码率理论结果
  • 选择仿真工具, 搭建仿真模型, 设置仿真参数进行仿真, 获得误码率仿真结果
  • 将仿真结果与误码率结果进行比较, 进行误差分析, 得出结论

2. 系统模型

传输系统为数字基带传输系统时, 其基本模型如下图所示

图2.1 数字基带传输系统基本模型


2.1 信号带宽无限时的单极性基带传输系统模型

带宽无限的理想AWGN信道的传输函数 C(f)C(f)C(f) 的幅频特性曲线如 图1.1.2.3 (a) 所示, 为一个恒定的值.
为保证通过接收滤波器后


2.1.1 不归零码(NRZ)

图2.1.1.1 单极性不归零码波形与功率谱密度

单极性不归零码幅度序列 {an}\{a_n\}{an​} 为:
an={A,i=10,i=2(2.1.1.1)a_n = \begin{cases} A, & i = 1 \\ 0, & i = 2 \end{cases} \tag{2.1.1.1} an​={A,0,​i=1i=2​(2.1.1.1)

单极性不归零码冲激序列表达式:
∑n=−∞∞anδ(t−nTs)(2.1.1.2)\sum_{n = - \infty}^{\infty} a_n \delta (t - nT_s) \tag{2.1.1.2} n=−∞∑∞​an​δ(t−nTs​)(2.1.1.2)

单极性不归零码发送信号 s(t)s(t)s(t) 表达式:
s(t)=∑n=−∞∞angT(t−nTs)(2.1.1.3)s(t) = \sum_{n = - \infty}^{\infty} a_n g_T(t - nT_s) \tag{2.1.1.3} s(t)=n=−∞∑∞​an​gT​(t−nTs​)(2.1.1.3)

其中, 发送滤波器单位脉冲响应 gT(t)g_T(t)gT​(t):
gT(t)=A⋅Rect(tTs)={A,0<t<Ts0,其它(2.1.1.4)g_T(t) = A \cdot Rect(\frac{t}{T_s}) = \begin{cases} A, &0 < t < T_s \\ 0, &其它 \end{cases} \tag{2.1.1.4} gT​(t)=A⋅Rect(Ts​t​)={A,0,​0<t<Ts​其它​(2.1.1.4)

系统函数 GT(f)G_T(f)GT​(f):
GT(f)=ATsSa(πfTs)(2.1.1.5)G_T(f) = A T_s Sa(\pi f T_s) \tag{2.1.1.5} GT​(f)=ATs​Sa(πfTs​)(2.1.1.5)

发送信号功率谱密度表达式(0, 1等概):
Ps(f)=σa2Ts∣GT(f)∣2+ma2Ts2∑k=−∞∞∣GT(kTs)∣2δ(f−kTs)=A2Ts4Sa2(πfTs)+A24δ(f)(2.1.1.6)\begin{aligned} P_s(f) &= \cfrac{\sigma_a^2}{T_s}|G_T(f)|^2 + \cfrac{m_a^2}{T_s^2} \sum_{k = -\infty}^{\infty} |G_T(\frac{k}{T_s})|^2 \delta(f - \cfrac{k}{T_s}) \\ &= \frac{A^2 T_s}{4} Sa^2(\pi f T_s) + \frac{A^2}{4} \delta(f) \end{aligned} \tag{2.1.1.6} Ps​(f)​=Ts​σa2​​∣GT​(f)∣2+Ts2​ma2​​k=−∞∑∞​∣GT​(Ts​k​)∣2δ(f−Ts​k​)=4A2Ts​​Sa2(πfTs​)+4A2​δ(f)​(2.1.1.6)

接收滤波器输入信号:
r(t)=si(t)+nw(t)(2.1.1.7)r(t) = s_i(t) + n_w(t) \tag{2.1.1.7} r(t)=si​(t)+nw​(t)(2.1.1.7)

其中
si(t)={s1(t)=A,发送"1"s2(t)=0,发送"0"(2.1.1.8)s_i(t) = \begin{cases} s_1(t) = A, &发送"1" \\ s_2(t) = 0, &发送"0" \end{cases} \tag{2.1.1.8} si​(t)={s1​(t)=A,s2​(t)=0,​发送"1"发送"0"​(2.1.1.8)

匹配滤波器/相关接收机输出信号(传输 s1(t)s_1(t)s1​(t) 时):
y(t)=r(t)∗h(t)=∫0tr(τ)h(t−τ)dτ=∫0tr(τ)s1(T−t+τ)dτ=∫0t[s1(τ)+nw(τ)]s1(T−t+τ)dτ(2.1.1.9)\begin{aligned} y(t) &= r(t) * h(t) \\ &= \int_0^t r(\tau) h(t - \tau) d\tau \\ &= \int_0^t r(\tau) s_1(T - t + \tau) d\tau \\ &= \int_0^t [s_1(\tau) + n_w(\tau)]s_1(T - t + \tau) d\tau \\ \end{aligned} \tag{2.1.1.9} y(t)​=r(t)∗h(t)=∫0t​r(τ)h(t−τ)dτ=∫0t​r(τ)s1​(T−t+τ)dτ=∫0t​[s1​(τ)+nw​(τ)]s1​(T−t+τ)dτ​(2.1.1.9)

其中, 匹配滤波器的单位冲激响应 h(t)h(t)h(t):
h(t)=s1(T−t)(2.1.1.10)h(t) = s_1(T - t) \tag{2.1.1.10} h(t)=s1​(T−t)(2.1.1.10)

在最佳抽样时刻(T=TsT=T_sT=Ts​)进行抽样(传输 s1(t)s_1(t)s1​(t) 时), 得:
y1≡y(T)=∫0T[s1(τ)+nw(τ)]s1(τ)dτ=∫0Ts12(τ)dτ+∫0Ts1(τ)nw(τ)dτ=Es1+Z(2.1.1.11)\begin{aligned} y_1 &\equiv y(T) \\ &= \int_0^T [s_1(\tau) + n_w(\tau)]s_1(\tau) d\tau \\ &= \int_0^T s_1^2(\tau) d\tau + \int_0^T s_1(\tau) n_w(\tau) d\tau \\ &= E_{s1} + Z \\ \end{aligned} \tag{2.1.1.11} y1​​≡y(T)=∫0T​[s1​(τ)+nw​(τ)]s1​(τ)dτ=∫0T​s12​(τ)dτ+∫0T​s1​(τ)nw​(τ)dτ=Es1​+Z​(2.1.1.11)

同理可得传输信号 s2(t)s_2(t)s2​(t) 时有:
y2≡y(T)=∫0T[s2(τ)+nw(τ)]s1(τ)dτ=∫0Ts1(τ)s2(τ)dτ+∫0Ts1(τ)nw(τ)dτ=0+Z(2.1.1.12)\begin{aligned} y_2 &\equiv y(T) \\ &= \int_0^T [s_2(\tau) + n_w(\tau)]s_1(\tau) d\tau \\ &= \int_0^T s_1(\tau)s_2(\tau) d\tau + \int_0^T s_1(\tau) n_w(\tau) d\tau \\ &= 0 + Z \\ \end{aligned} \tag{2.1.1.12} y2​​≡y(T)=∫0T​[s2​(τ)+nw​(τ)]s1​(τ)dτ=∫0T​s1​(τ)s2​(τ)dτ+∫0T​s1​(τ)nw​(τ)dτ=0+Z​(2.1.1.12)

其中 Es1E_{s1}Es1​ 为传输符号 s1s_1s1​ 时有用信号的能量, ZZZ 为传输符号 s1s_1s1​ 时噪声的能量
Es1=∫0Tss12(τ)dτ=A2Ts(2.1.1.13)E_{s1} = \int_0^{T_s} s_1^2(\tau) d\tau = A^2 T_s \tag{2.1.1.13} Es1​=∫0Ts​​s12​(τ)dτ=A2Ts​(2.1.1.13)
Z=∫0Tss1(τ)nw(τ)dτ(2.1.1.14)Z = \int_0^{T_s} s_1(\tau) n_w(\tau) d\tau \tag{2.1.1.14} Z=∫0Ts​​s1​(τ)nw​(τ)dτ(2.1.1.14)
E(Z∣s1)=0(2.1.1.15)E(Z | s_1) = 0 \tag{2.1.1.15} E(Z∣s1​)=0(2.1.1.15)
D(Z∣s1)=σ2=E{[Z−E(Z)]2∣s1}=E[∫0Ts∫0Tsnw(t1)nw(t2)s1(t1)s1(t2)dt1dt2]=∫0Ts∫0TsE[nw(t1)nw(t2)]s1(t1)s1(t2)dt1dt2=∫0Ts∫0TsRw(τ)s1(t1)s1(t2)dt1dt2=∫0Ts∫0TsN02δ(τ)s1(t1)s1(t2)dt1dt2=N02Es1(2.1.1.16)\begin{aligned} D(Z | s_1) &= \sigma^2 \\ &= E\bigg\{ [Z - E(Z)]^2 | s_1 \bigg\} \\ &= E\bigg[ \int_0^{T_s} \int_0^{T_s} n_w(t_1) n_w(t_2) s_1(t_1) s_1(t_2) dt_1 dt_2 \bigg] \\ &= \int_0^{T_s} \int_0^{T_s} E\bigg[ n_w(t_1) n_w(t_2) \bigg] s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} R_w(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} \frac{N_0}{2} \delta(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \frac{N_0}{2}E_{s1} \\ \end{aligned} \tag{2.1.1.16} D(Z∣s1​)​=σ2=E{[Z−E(Z)]2∣s1​}=E[∫0Ts​​∫0Ts​​nw​(t1​)nw​(t2​)s1​(t1​)s1​(t2​)dt1​dt2​]=∫0Ts​​∫0Ts​​E[nw​(t1​)nw​(t2​)]s1​(t1​)s1​(t2​)dt1​dt2​=∫0Ts​​∫0Ts​​Rw​(τ)s1​(t1​)s1​(t2​)dt1​dt2​=∫0Ts​​∫0Ts​​2N0​​δ(τ)s1​(t1​)s1​(t2​)dt1​dt2​=2N0​​Es1​​(2.1.1.16)

  • 其中 τ=t2−t1\tau = t_2 - t_1τ=t2​−t1​

2.1.2 归零码(RZ, 50%)

图2.1.2.1 单极性归零码波形与功率谱密度

单极性归零码幅度序列 {an}\{a_n\}{an​} 同公式 (2.1.1.1):
an={A,i=10,i=2(2.1.2.1)a_n = \begin{cases} A, & i = 1 \\ 0, & i = 2 \end{cases} \tag{2.1.2.1} an​={A,0,​i=1i=2​(2.1.2.1)

单极性归零码冲激序列表达式同公式 (2.1.1.2):
∑n=−∞∞anδ(t−nTs)(2.1.2.2)\sum_{n = - \infty}^{\infty} a_n \delta (t - nT_s) \tag{2.1.2.2} n=−∞∑∞​an​δ(t−nTs​)(2.1.2.2)

单极性归零码发送信号 s(t)s(t)s(t) 表达式同公式 (2.1.1.3):
s(t)=∑n=−∞∞angT(t−nTs)(2.1.2.3)s(t) = \sum_{n = - \infty}^{\infty} a_n g_T(t - nT_s) \tag{2.1.2.3} s(t)=n=−∞∑∞​an​gT​(t−nTs​)(2.1.2.3)

其中, 发送滤波器单位脉冲响应 gT(t)g_T(t)gT​(t):
gT(t)=A⋅Rect(2tTs)={A,0<t<Ts20,其它(2.1.2.4)g_T(t) = A \cdot Rect(\frac{2 t}{T_s}) = \begin{cases} A, &0 < t < \frac{T_s}{2} \\ 0, &其它 \end{cases} \tag{2.1.2.4} gT​(t)=A⋅Rect(Ts​2t​)={A,0,​0<t<2Ts​​其它​(2.1.2.4)

系统函数 GT(f)G_T(f)GT​(f):
GT(f)=ATs2Sa(πfTs2)(2.1.2.5)G_T(f) = \frac{A T_s}{2} Sa(\frac{\pi f T_s}{2}) \tag{2.1.2.5} GT​(f)=2ATs​​Sa(2πfTs​​)(2.1.2.5)

发送信号功率谱密度表达式(0, 1等概):
Ps(f)=σa2Ts∣GT(f)∣2+ma2Ts2∑k=−∞∞∣GT(kTs)∣2δ(f−kTs)=A2Ts16Sa2(πfTs2)+A216∑k=−∞∞Sa2(kπ2)δ(f−kTs)(2.1.2.6)\begin{aligned} P_s(f) &= \cfrac{\sigma_a^2}{T_s}|G_T(f)|^2 + \cfrac{m_a^2}{T_s^2} \sum_{k = -\infty}^{\infty} |G_T(\frac{k}{T_s})|^2 \delta(f - \cfrac{k}{T_s}) \\ &= \frac{A^2 T_s}{16} Sa^2(\frac{\pi f T_s}{2}) + \frac{A^2}{16} \sum_{k = -\infty}^{\infty} {Sa}^2(\frac{k \pi}{2}) \delta(f - \frac{k}{T_s}) \end{aligned} \tag{2.1.2.6} Ps​(f)​=Ts​σa2​​∣GT​(f)∣2+Ts2​ma2​​k=−∞∑∞​∣GT​(Ts​k​)∣2δ(f−Ts​k​)=16A2Ts​​Sa2(2πfTs​​)+16A2​k=−∞∑∞​Sa2(2kπ​)δ(f−Ts​k​)​(2.1.2.6)

接收滤波器输入信号, 同公式 (2.1.1.7):
r(t)=si(t)+nw(t)(2.1.2.7)r(t) = s_i(t) + n_w(t) \tag{2.1.2.7} r(t)=si​(t)+nw​(t)(2.1.2.7)

其中
si(t)={s1(t)=A,发送"1",0<t<Ts2s1(t)=0,发送"1",Ts2<t<Tss2(t)=0,发送"0"(2.1.2.8)s_i(t) = \begin{cases} s_1(t) = A, &发送"1", 0 < t < \frac{T_s}{2} \\ s_1(t) = 0, &发送"1", \frac{T_s}{2} < t < T_s \\ s_2(t) = 0, &发送"0" \end{cases} \tag{2.1.2.8} si​(t)=⎩⎪⎨⎪⎧​s1​(t)=A,s1​(t)=0,s2​(t)=0,​发送"1",0<t<2Ts​​发送"1",2Ts​​<t<Ts​发送"0"​(2.1.2.8)

匹配滤波器/相关接收机输出信号(传输 s1(t)s_1(t)s1​(t) 时), 同公式 (2.1.1.9):
y(t)=r(t)∗h(t)=∫0tr(τ)h(t−τ)dτ=∫0tr(τ)s1(T−t+τ)dτ=∫0t[s1(τ)+nw(τ)]s1(T−t+τ)dτ(2.1.2.9)\begin{aligned} y(t) &= r(t) * h(t) \\ &= \int_0^t r(\tau) h(t - \tau) d\tau \\ &= \int_0^t r(\tau) s_1(T - t + \tau) d\tau \\ &= \int_0^t [s_1(\tau) + n_w(\tau)]s_1(T - t + \tau) d\tau \\ \end{aligned} \tag{2.1.2.9} y(t)​=r(t)∗h(t)=∫0t​r(τ)h(t−τ)dτ=∫0t​r(τ)s1​(T−t+τ)dτ=∫0t​[s1​(τ)+nw​(τ)]s1​(T−t+τ)dτ​(2.1.2.9)

其中, 匹配滤波器的单位冲激响应 h(t)h(t)h(t), 同公式 (2.1.1.10):
h(t)=s1(T−t)(2.1.2.10)h(t) = s_1(T - t) \tag{2.1.2.10} h(t)=s1​(T−t)(2.1.2.10)

在最佳抽样时刻(T=Ts2T=\frac{T_s}{2}T=2Ts​​)进行抽样(传输 s1(t)s_1(t)s1​(t) 时), 同公式(2.1.2.11):
y1≡y(T)=∫0T[s1(τ)+nw(τ)]s1(τ)dτ=∫0Ts12(τ)dτ+∫0Ts1(τ)nw(τ)dτ=Es1+Z(2.1.2.11)\begin{aligned} y_1 &\equiv y(T) \\ &= \int_0^T [s_1(\tau) + n_w(\tau)]s_1(\tau) d\tau \\ &= \int_0^T s_1^2(\tau) d\tau + \int_0^T s_1(\tau) n_w(\tau) d\tau \\ &= E_{s1} + Z \\ \end{aligned} \tag{2.1.2.11} y1​​≡y(T)=∫0T​[s1​(τ)+nw​(τ)]s1​(τ)dτ=∫0T​s12​(τ)dτ+∫0T​s1​(τ)nw​(τ)dτ=Es1​+Z​(2.1.2.11)

同理可得传输信号 s2(t)s_2(t)s2​(t) 时同公式 (2.1.2.12):
y2≡y(T)=∫0T[s2(τ)+nw(τ)]s1(τ)dτ=∫0Ts1(τ)s2(τ)dτ+∫0Ts1(τ)nw(τ)dτ=0+Z(2.1.2.12)\begin{aligned} y_2 &\equiv y(T) \\ &= \int_0^T [s_2(\tau) + n_w(\tau)]s_1(\tau) d\tau \\ &= \int_0^T s_1(\tau)s_2(\tau) d\tau + \int_0^T s_1(\tau) n_w(\tau) d\tau \\ &= 0 + Z \\ \end{aligned} \tag{2.1.2.12} y2​​≡y(T)=∫0T​[s2​(τ)+nw​(τ)]s1​(τ)dτ=∫0T​s1​(τ)s2​(τ)dτ+∫0T​s1​(τ)nw​(τ)dτ=0+Z​(2.1.2.12)

其中 Es1E_{s1}Es1​ 为传输符号 s1s_1s1​ 时有用信号的能量, ZZZ 为传输符号 s1s_1s1​ 时噪声的能量
Es1=∫0Ts2s12(τ)dτ=A2Ts2(2.1.2.13)E_{s1} = \int_0^{\frac{T_s}{2}} s_1^2(\tau) d\tau = A^2 \frac{T_s}{2} \tag{2.1.2.13} Es1​=∫02Ts​​​s12​(τ)dτ=A22Ts​​(2.1.2.13)
Z=∫0Ts2s1(τ)nw(τ)dτ(2.1.2.14)Z = \int_0^{\frac{T_s}{2}} s_1(\tau) n_w(\tau) d\tau \tag{2.1.2.14} Z=∫02Ts​​​s1​(τ)nw​(τ)dτ(2.1.2.14)
E(Z∣s1)=0(2.1.2.15)E(Z | s_1) = 0 \tag{2.1.2.15} E(Z∣s1​)=0(2.1.2.15)
D(Z∣s1)=σ2=E{[Z−E(Z)]2∣s1}=E[∫0Ts2∫0Ts2nw(t1)nw(t2)s1(t1)s1(t2)dt1dt2]=∫0Ts2∫0Ts2E[nw(t1)nw(t2)]s1(t1)s1(t2)dt1dt2=∫0Ts2∫0Ts2Rw(τ)s1(t1)s1(t2)dt1dt2=∫0Ts2∫0Ts2N02δ(τ)s1(t1)s1(t2)dt1dt2=N02Es1(2.1.2.16)\begin{aligned} D(Z | s_1) &= \sigma^2 \\ &= E\bigg\{ [Z - E(Z)]^2 | s_1 \bigg\} \\ &= E\bigg[ \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} n_w(t_1) n_w(t_2) s_1(t_1) s_1(t_2) dt_1 dt_2 \bigg] \\ &= \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} E\bigg[ n_w(t_1) n_w(t_2) \bigg] s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} R_w(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} \frac{N_0}{2} \delta(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \frac{N_0}{2}E_{s1} \\ \end{aligned} \tag{2.1.2.16} D(Z∣s1​)​=σ2=E{[Z−E(Z)]2∣s1​}=E[∫02Ts​​​∫02Ts​​​nw​(t1​)nw​(t2​)s1​(t1​)s1​(t2​)dt1​dt2​]=∫02Ts​​​∫02Ts​​​E[nw​(t1​)nw​(t2​)]s1​(t1​)s1​(t2​)dt1​dt2​=∫02Ts​​​∫02Ts​​​Rw​(τ)s1​(t1​)s1​(t2​)dt1​dt2​=∫02Ts​​​∫02Ts​​​2N0​​δ(τ)s1​(t1​)s1​(t2​)dt1​dt2​=2N0​​Es1​​(2.1.2.16)

  • 其中 τ=t2−t1\tau = t_2 - t_1τ=t2​−t1​

2.1.3 升余弦传输(RC)

图2.1.3.1 升余弦滚降传输系统单位冲激响应与幅度频谱
![升余弦滚降传输系统单位冲激响应与幅度频谱] 图2.1.3.1 升余弦滚降传输系统单位冲激响应与幅度频谱 升余弦传输系统幅度序列 $\{a_n\}$ 同公式 `(2.1.1.1)`: $$ a_n = \begin{cases} A, & i = 1 \\ 0, & i = 2 \end{cases} \tag{2.1.3.1} $$

升余弦传输系统冲激序列表达式同公式 (2.1.1.2):
∑n=−∞∞anδ(t−nTs)(2.1.3.2)\sum_{n = - \infty}^{\infty} a_n \delta (t - nT_s) \tag{2.1.3.2} n=−∞∑∞​an​δ(t−nTs​)(2.1.3.2)

升余弦传输系统发送信号 s(t)s(t)s(t) 表达式:
s(t)=∑n=−∞∞anhRRC(t−nTs)(2.1.3.3)s(t) = \sum_{n = - \infty}^{\infty} a_n h_{RRC}(t - nT_s) \tag{2.1.3.3} s(t)=n=−∞∑∞​an​hRRC​(t−nTs​)(2.1.3.3)

其中, 由发送滤波器(根升余弦滤波器), 带宽无限信号与接收滤波器(根升余弦滤波器)组成的升余弦基带成型网络的单位脉冲响 hRC(t)h_{RC}(t)hRC​(t) 与系统函数 HRC(f)H_{RC}(f)HRC​(f) 如 图2.1.3.1 所示.
升余弦单位脉冲响应表达式 hRC(t)h_{RC}(t)hRC​(t):
hRC(t)=sa(πtTs)cos(απtTs)1−4α2t2Ts2(2.1.3.4)h_{RC}(t) = sa(\frac{\pi t}{T_s}) \frac{cos(\cfrac{\alpha \pi t}{T_s})}{1 - \cfrac{4 \alpha^2 t^2}{T_s^2}} \tag{2.1.3.4} hRC​(t)=sa(Ts​πt​)1−Ts2​4α2t2​cos(Ts​απt​)​(2.1.3.4)

升余弦滚降传输系统函数表达式 HRC(f)H_{RC}(f)HRC​(f):
HRC(f)={Ts,∣f∣<12Ts(1−α)Ts2{1−sin⁡[Tsα(f−12Ts)]},∣12Ts(2−α)∣≤∣f∣≤12Ts(1+α)0,∣f∣>12Ts(1+α)(2.1.3.5)H_{RC}(f) = \begin{cases} T_s, &|f| < \frac{1}{2 T_s} (1 - \alpha) \\ \frac{T_s}{2} \big\{ 1 - \sin\big[ \frac{T_s}{\alpha} (f - \frac{1}{2 T_s}) \big] \big\}, &|\frac{1}{2 T_s} (2 - \alpha)| \le |f| \le \frac{1}{2 T_s} (1 + \alpha) \\ 0, &|f| > \frac{1}{2 T_s}(1 + \alpha) \\ \end{cases} \tag{2.1.3.5} HRC​(f)=⎩⎪⎨⎪⎧​Ts​,2Ts​​{1−sin[αTs​​(f−2Ts​1​)]},0,​∣f∣<2Ts​1​(1−α)∣2Ts​1​(2−α)∣≤∣f∣≤2Ts​1​(1+α)∣f∣>2Ts​1​(1+α)​(2.1.3.5)
根升余弦单位脉冲响应表达式 hRRC(t)h_{RRC}(t)hRRC​(t):
hRRC(t)=4αcos⁡((1+α)πtTs)+sin⁡((1−α)πtTs)4αtTsπTs(1−(4αtTs)2)=sin⁡[(1−α)πtTs]+4αtTscos⁡[(1+α)πtTs]πt[1−(4αtTs)2](2.1.3.6)\begin{aligned} h_{RRC}(t) &= 4 \alpha \frac{\cos(\cfrac{(1 + \alpha) \pi t}{T_s}) + \cfrac{\sin(\cfrac{(1 - \alpha) \pi t}{T_s})}{4 \alpha \cfrac{t}{T_s}}}{\pi \sqrt{T_s}(1 - (\cfrac{4 \alpha t}{T_s})^2)} \\ &= \frac{\sin\bigg[ \cfrac{(1 - \alpha) \pi t}{T_s} \bigg] + \cfrac{4 \alpha t}{T_s} \cos \bigg[ \cfrac{(1 + \alpha) \pi t}{T_s} \bigg]}{\pi t \bigg[ 1 - (\cfrac{4 \alpha t}{T_s})^2 \bigg]} \end{aligned} \tag{2.1.3.6} hRRC​(t)​=4απTs​​(1−(Ts​4αt​)2)cos(Ts​(1+α)πt​)+4αTs​t​sin(Ts​(1−α)πt​)​​=πt[1−(Ts​4αt​)2]sin[Ts​(1−α)πt​]+Ts​4αt​cos[Ts​(1+α)πt​]​​(2.1.3.6)

根升余弦滚降传输系统函数表达式 HRRC(f)H_{RRC}(f)HRRC​(f):
HRRC(f)=HRC(f)(2.1.3.7)H_{RRC}(f) = \sqrt{H_{RC}(f)} \tag{2.1.3.7} HRRC​(f)=HRC​(f)​(2.1.3.7)

  • 其中滚降因子 0≤α≤10 \le \alpha \le 10≤α≤1

接收滤波器输入信号, 同公式 (2.1.1.7):
r(t)=si(t)+nw(t)(2.1.3.8)r(t) = s_i(t) + n_w(t) \tag{2.1.3.8} r(t)=si​(t)+nw​(t)(2.1.3.8)

其中
si(t)={s1(t)=AhRRC(t),发送"1"s2(t)=0,发送"0"(2.1.3.9)s_i(t) = \begin{cases} s_1(t) = Ah_{RRC}(t), &发送"1" \\ s_2(t) = 0, &发送"0" \end{cases} \tag{2.1.3.9} si​(t)={s1​(t)=AhRRC​(t),s2​(t)=0,​发送"1"发送"0"​(2.1.3.9)

匹配滤波器/相关接收机输出信号(传输 s1(t)s_1(t)s1​(t) 时), 同公式 (2.1.1.9):
y(t)=r(t)∗h(t)=∫0tr(τ)h(t−τ)dτ=∫0tr(τ)s1(T−t+τ)dτ=∫0t[s1(τ)+nw(τ)]s1(T−t+τ)dτ(2.1.3.10)\begin{aligned} y(t) &= r(t) * h(t) \\ &= \int_0^t r(\tau) h(t - \tau) d\tau \\ &= \int_0^t r(\tau) s_1(T - t + \tau) d\tau \\ &= \int_0^t [s_1(\tau) + n_w(\tau)]s_1(T - t + \tau) d\tau \\ \end{aligned} \tag{2.1.3.10} y(t)​=r(t)∗h(t)=∫0t​r(τ)h(t−τ)dτ=∫0t​r(τ)s1​(T−t+τ)dτ=∫0t​[s1​(τ)+nw​(τ)]s1​(T−t+τ)dτ​(2.1.3.10)

其中, 匹配滤波器的单位冲激响应 h(t)h(t)h(t), 同公式 (2.1.1.10):
h(t)=s1(T−t)(2.1.3.11)h(t) = s_1(T - t) \tag{2.1.3.11} h(t)=s1​(T−t)(2.1.3.11)

在最佳抽样时刻(T=TsT=T_sT=Ts​)进行抽样(传输 s1(t)s_1(t)s1​(t) 时), 同公式(2.1.3.11):
y1≡y(T)=∫0T[s1(τ)+nw(τ)]s1(τ)dτ=∫0Ts12(τ)dτ+∫0Ts1(τ)nw(τ)dτ=Es1+Z(2.1.3.12)\begin{aligned} y_1 &\equiv y(T) \\ &= \int_0^T [s_1(\tau) + n_w(\tau)]s_1(\tau) d\tau \\ &= \int_0^T s_1^2(\tau) d\tau + \int_0^T s_1(\tau) n_w(\tau) d\tau \\ &= E_{s1} + Z \\ \end{aligned} \tag{2.1.3.12} y1​​≡y(T)=∫0T​[s1​(τ)+nw​(τ)]s1​(τ)dτ=∫0T​s12​(τ)dτ+∫0T​s1​(τ)nw​(τ)dτ=Es1​+Z​(2.1.3.12)

同理可得传输信号 s2(t)s_2(t)s2​(t) 时同公式 (2.1.3.12):
y2≡y(T)=∫0T[s2(τ)+nw(τ)]s1(τ)dτ=∫0Ts1(τ)s2(τ)dτ+∫0Ts1(τ)nw(τ)dτ=0+Z(2.1.3.13)\begin{aligned} y_2 &\equiv y(T) \\ &= \int_0^T [s_2(\tau) + n_w(\tau)]s_1(\tau) d\tau \\ &= \int_0^T s_1(\tau)s_2(\tau) d\tau + \int_0^T s_1(\tau) n_w(\tau) d\tau \\ &= 0 + Z \\ \end{aligned} \tag{2.1.3.13} y2​​≡y(T)=∫0T​[s2​(τ)+nw​(τ)]s1​(τ)dτ=∫0T​s1​(τ)s2​(τ)dτ+∫0T​s1​(τ)nw​(τ)dτ=0+Z​(2.1.3.13)

其中 Es1E_{s1}Es1​ 为传输符号 s1s_1s1​ 时有用信号的能量, ZZZ 为传输符号 s1s_1s1​ 时噪声的能量
Es1=∫0Tss12(τ)dτ=A2∫0TshRC(τ)dτ(2.1.2.14)E_{s1} = \int_0^{T_s} s_1^2(\tau) d\tau = A^2 \int_0^{T_s} h_{RC}(\tau) d\tau \tag{2.1.2.14} Es1​=∫0Ts​​s12​(τ)dτ=A2∫0Ts​​hRC​(τ)dτ(2.1.2.14)
Z=∫0Tss1(τ)nw(τ)dτ(2.1.3.15)Z = \int_0^{T_s} s_1(\tau) n_w(\tau) d\tau \tag{2.1.3.15} Z=∫0Ts​​s1​(τ)nw​(τ)dτ(2.1.3.15)
E(Z∣s1)=0(2.1.3.16)E(Z | s_1) = 0 \tag{2.1.3.16} E(Z∣s1​)=0(2.1.3.16)
D(Z∣s1)=σ2=E{[Z−E(Z)]2∣s1}=E[∫0Ts∫0Tsnw(t1)nw(t2)s1(t1)s1(t2)dt1dt2]=∫0Ts∫0TsE[nw(t1)nw(t2)]s1(t1)s1(t2)dt1dt2=∫0Ts∫0TsRw(τ)s1(t1)s1(t2)dt1dt2=∫0Ts∫0TsN02δ(τ)s1(t1)s1(t2)dt1dt2=N02Es1(2.1.3.17)\begin{aligned} D(Z | s_1) &= \sigma^2 \\ &= E\bigg\{ [Z - E(Z)]^2 | s_1 \bigg\} \\ &= E\bigg[ \int_0^{T_s} \int_0^{T_s} n_w(t_1) n_w(t_2) s_1(t_1) s_1(t_2) dt_1 dt_2 \bigg] \\ &= \int_0^{T_s} \int_0^{T_s} E\bigg[ n_w(t_1) n_w(t_2) \bigg] s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} R_w(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} \frac{N_0}{2} \delta(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \frac{N_0}{2}E_{s1} \\ \end{aligned} \tag{2.1.3.17} D(Z∣s1​)​=σ2=E{[Z−E(Z)]2∣s1​}=E[∫0Ts​​∫0Ts​​nw​(t1​)nw​(t2​)s1​(t1​)s1​(t2​)dt1​dt2​]=∫0Ts​​∫0Ts​​E[nw​(t1​)nw​(t2​)]s1​(t1​)s1​(t2​)dt1​dt2​=∫0Ts​​∫0Ts​​Rw​(τ)s1​(t1​)s1​(t2​)dt1​dt2​=∫0Ts​​∫0Ts​​2N0​​δ(τ)s1​(t1​)s1​(t2​)dt1​dt2​=2N0​​Es1​​(2.1.3.17)

  • 其中 τ=t2−t1\tau = t_2 - t_1τ=t2​−t1​

2.2 信号带宽受限时的双极性基带传输系统模型

带宽受限的理想AWGN信道的传输函数 C(f)C(f)C(f) 的幅频特性曲线如 图1.1.2.3 (b) 所示, 为一个理想低通滤波器.


2.2.1 不归零码(NRZ)

图2.2.1.1 双极性不归零码波形与功率谱密度

双极性不归零码幅度序列 {an}\{a_n\}{an​} 为:
an={A,i=1−A,i=2(2.2.1.1)a_n = \begin{cases} A, & i = 1 \\ -A, & i = 2 \end{cases} \tag{2.2.1.1} an​={A,−A,​i=1i=2​(2.2.1.1)

双极性不归零码冲激序列表达式:
∑n=−∞∞anδ(t−nTs)(2.2.1.2)\sum_{n = - \infty}^{\infty} a_n \delta (t - nT_s) \tag{2.2.1.2} n=−∞∑∞​an​δ(t−nTs​)(2.2.1.2)

双极性不归零码发送信号 s(t)s(t)s(t) 表达式:
s(t)=∑n=−∞∞angT(t−nTs)(2.2.1.3)s(t) = \sum_{n = - \infty}^{\infty} a_n g_T(t - nT_s) \tag{2.2.1.3} s(t)=n=−∞∑∞​an​gT​(t−nTs​)(2.2.1.3)

其中, 发送滤波器单位脉冲响应 gT(t)g_T(t)gT​(t):
gT(t)=A⋅Rect(tTs)={A,0<t<Ts0,其它(2.2.1.4)g_T(t) = A \cdot Rect(\frac{t}{T_s}) = \begin{cases} A, &0 < t < T_s \\ 0, &其它 \end{cases} \tag{2.2.1.4} gT​(t)=A⋅Rect(Ts​t​)={A,0,​0<t<Ts​其它​(2.2.1.4)

系统函数 GT(f)G_T(f)GT​(f):
GT(f)=ATsSa(πfTs)(2.2.1.5)G_T(f) = A T_s Sa(\pi f T_s) \tag{2.2.1.5} GT​(f)=ATs​Sa(πfTs​)(2.2.1.5)

发送信号功率谱密度表达式(0, 1等概):
Ps(f)=σa2Ts∣GT(f)∣2+ma2Ts2∑k=−∞∞∣GT(kTs)∣2δ(f−kTs)=A2TsSa2(πfTs)(2.2.1.6)\begin{aligned} P_s(f) &= \cfrac{\sigma_a^2}{T_s}|G_T(f)|^2 + \cfrac{m_a^2}{T_s^2} \sum_{k = -\infty}^{\infty} |G_T(\frac{k}{T_s})|^2 \delta(f - \cfrac{k}{T_s}) \\ &= A^2 T_s Sa^2(\pi f T_s) \end{aligned} \tag{2.2.1.6} Ps​(f)​=Ts​σa2​​∣GT​(f)∣2+Ts2​ma2​​k=−∞∑∞​∣GT​(Ts​k​)∣2δ(f−Ts​k​)=A2Ts​Sa2(πfTs​)​(2.2.1.6)

接收滤波器输入信号:
r(t)=si(t)∗c(t)+nw(t)(2.2.1.7)r(t) = s_i(t) * c(t) + n_w(t) \tag{2.2.1.7} r(t)=si​(t)∗c(t)+nw​(t)(2.2.1.7)

其中 c(t)c(t)c(t) 为带宽受限信道的传输函数的单位冲激响应
si(t)={s1(t)=A,发送"1"s2(t)=−A,发送"0"(2.2.1.8)s_i(t) = \begin{cases} s_1(t) = A, &发送"1" \\ s_2(t) = -A, &发送"0" \end{cases} \tag{2.2.1.8} si​(t)={s1​(t)=A,s2​(t)=−A,​发送"1"发送"0"​(2.2.1.8)

匹配滤波器/相关接收机输出信号(传输 s1(t)s_1(t)s1​(t) 时):
y(t)=r(t)∗h(t)=∫0tr(τ)h(t−τ)dτ=∫0tr(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0t[s1(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ(2.2.1.9)\begin{aligned} y(t) &= r(t) * h(t) \\ &= \int_0^t r(\tau) h(t - \tau) d\tau \\ &= \int_0^t r(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^t [s_1(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ \end{aligned} \tag{2.2.1.9} y(t)​=r(t)∗h(t)=∫0t​r(τ)h(t−τ)dτ=∫0t​r(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0t​[s1​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ​(2.2.1.9)

其中, 匹配滤波器的单位冲激响应 h(t)h(t)h(t):
h(t)=s1(T−t)∗c(T−t)(2.2.1.10)h(t) = s_1(T - t) * c(T - t) \tag{2.2.1.10} h(t)=s1​(T−t)∗c(T−t)(2.2.1.10)

在最佳抽样时刻(T=TsT=T_sT=Ts​)进行抽样(传输 s1(t)s_1(t)s1​(t) 时), 得:
y1≡y(T)=∫0T[s1(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0T[s1(T−t+τ)∗c(T−t+τ)]2dτ+∫0Tnw(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=Es1+Z(2.2.1.11)\begin{aligned} y_1 &\equiv y(T) \\ &= \int_0^T [s_1(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T [s_1(T - t + \tau) * c(T - t + \tau)]^2 d\tau + \int_0^T n_w(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= E_{s1} + Z \\ \end{aligned} \tag{2.2.1.11} y1​​≡y(T)=∫0T​[s1​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​[s1​(T−t+τ)∗c(T−t+τ)]2dτ+∫0T​nw​(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=Es1​+Z​(2.2.1.11)

同理可得传输信号 s2(t)s_2(t)s2​(t) 时有:
y2≡y(T)=∫0T[s2(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0T[s2(τ)∗c(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ+∫0Tnw(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=−Es1+Z(2.2.1.12)\begin{aligned} y_2 &\equiv y(T) \\ &= \int_0^T [s_2(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T [s_2(\tau) * c(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau + \int_0^T n_w(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= -E_{s1} + Z \\ \end{aligned} \tag{2.2.1.12} y2​​≡y(T)=∫0T​[s2​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​[s2​(τ)∗c(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ+∫0T​nw​(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=−Es1​+Z​(2.2.1.12)

其中 Es1E_{s1}Es1​ 为传输符号 s1s_1s1​ 时有用信号的能量, ZZZ 为传输符号 s1s_1s1​ 时噪声的能量
Es1=∫0Ts[s1(τ)∗c(τ)]2dτ(2.2.1.13)E_{s1} = \int_0^{T_s} [s_1(\tau) * c(\tau)]^2 d\tau \tag{2.2.1.13} Es1​=∫0Ts​​[s1​(τ)∗c(τ)]2dτ(2.2.1.13)
Z=∫0Tsnw(τ)[s1(τ)∗c(τ)]dτ(2.2.1.14)Z = \int_0^{T_s} n_w(\tau) [s_1(\tau) * c(\tau)] d\tau \tag{2.2.1.14} Z=∫0Ts​​nw​(τ)[s1​(τ)∗c(τ)]dτ(2.2.1.14)
E(Z∣s1)=0(2.2.1.15)E(Z | s_1) = 0 \tag{2.2.1.15} E(Z∣s1​)=0(2.2.1.15)
D(Z∣s1)=σ2=E{[Z−E(Z)]2∣s1}=E[∫0Ts∫0Tsnw(t1)nw(t2)⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2]=∫0Ts∫0TsE[nw(t1)nw(t2)]⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2=∫0Ts∫0TsRw(τ)⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2=∫0Ts∫0TsN02δ(τ)⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2=N02Es1(2.2.1.16)\begin{aligned} D(Z | s_1) &= \sigma^2 \\ &= E\bigg\{ [Z - E(Z)]^2 | s_1 \bigg\} \\ &= E\bigg[ \int_0^{T_s} \int_0^{T_s} n_w(t_1) n_w(t_2) \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \bigg] \\ &= \int_0^{T_s} \int_0^{T_s} E\bigg[ n_w(t_1) n_w(t_2) \bigg] \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} R_w(\tau) \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} \frac{N_0}{2} \delta(\tau) \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \\ &= \frac{N_0}{2}E_{s1} \\ \end{aligned} \tag{2.2.1.16} D(Z∣s1​)​=σ2=E{[Z−E(Z)]2∣s1​}=E[∫0Ts​​∫0Ts​​nw​(t1​)nw​(t2​)⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​]=∫0Ts​​∫0Ts​​E[nw​(t1​)nw​(t2​)]⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​=∫0Ts​​∫0Ts​​Rw​(τ)⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​=∫0Ts​​∫0Ts​​2N0​​δ(τ)⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​=2N0​​Es1​​(2.2.1.16)

  • 其中 τ=t2−t1\tau = t_2 - t_1τ=t2​−t1​

2.2.2 归零码(RZ, 50%)

图2.2.2.1 双极性归零码波形与功率谱密度

双极性归零码幅度序列 {an}\{a_n\}{an​} 同公式 (2.2.1.1):
an={A,i=1−A,i=2(2.2.2.1)a_n = \begin{cases} A, & i = 1 \\ -A, & i = 2 \end{cases} \tag{2.2.2.1} an​={A,−A,​i=1i=2​(2.2.2.1)

双极性归零码冲激序列表达式同公式 (2.2.1.2):
∑n=−∞∞anδ(t−nTs)(2.2.2.2)\sum_{n = - \infty}^{\infty} a_n \delta (t - nT_s) \tag{2.2.2.2} n=−∞∑∞​an​δ(t−nTs​)(2.2.2.2)

双极性归零码发送信号 s(t)s(t)s(t) 表达式同公式 (2.2.1.3):
s(t)=∑n=−∞∞angT(t−nTs)(2.2.2.3)s(t) = \sum_{n = - \infty}^{\infty} a_n g_T(t - nT_s) \tag{2.2.2.3} s(t)=n=−∞∑∞​an​gT​(t−nTs​)(2.2.2.3)

其中, 发送滤波器单位脉冲响应 gT(t)g_T(t)gT​(t):
gT(t)=A⋅Rect(2tTs)={A,0<t<Ts20,其它(2.2.2.4)g_T(t) = A \cdot Rect(\frac{2 t}{T_s}) = \begin{cases} A, &0 < t < \frac{T_s}{2} \\ 0, &其它 \end{cases} \tag{2.2.2.4} gT​(t)=A⋅Rect(Ts​2t​)={A,0,​0<t<2Ts​​其它​(2.2.2.4)

系统函数 GT(f)G_T(f)GT​(f):
GT(f)=ATs2Sa(πfTs2)(2.2.2.5)G_T(f) = \frac{A T_s}{2} Sa(\frac{\pi f T_s}{2}) \tag{2.2.2.5} GT​(f)=2ATs​​Sa(2πfTs​​)(2.2.2.5)

发送信号功率谱密度表达式(0, 1等概):
Ps(f)=σa2Ts∣GT(f)∣2+ma2Ts2∑k=−∞∞∣GT(kTs)∣2δ(f−kTs)=A2τ2TsSa2(πfτ)(2.2.2.6)\begin{aligned} P_s(f) &= \cfrac{\sigma_a^2}{T_s}|G_T(f)|^2 + \cfrac{m_a^2}{T_s^2} \sum_{k = -\infty}^{\infty} |G_T(\frac{k}{T_s})|^2 \delta(f - \cfrac{k}{T_s}) \\ &= \frac{A^2 \tau^2}{T_s} {Sa}^2 (\pi f \tau) \end{aligned} \tag{2.2.2.6} Ps​(f)​=Ts​σa2​​∣GT​(f)∣2+Ts2​ma2​​k=−∞∑∞​∣GT​(Ts​k​)∣2δ(f−Ts​k​)=Ts​A2τ2​Sa2(πfτ)​(2.2.2.6)

接收滤波器输入信号, 同公式 (2.2.1.7):
r(t)=si(t)∗c(t)+nw(t)(2.2.2.7)r(t) = s_i(t) * c(t) + n_w(t) \tag{2.2.2.7} r(t)=si​(t)∗c(t)+nw​(t)(2.2.2.7)

其中
si(t)={s1(t)=A,发送"1",0<t<Ts2s1(t)=0,发送"1",Ts2<t<Tss2(t)=−A,发送"0",0<t<Ts2s2(t)=0,发送"0"(2.2.2.8)s_i(t) = \begin{cases} s_1(t) = A, &发送"1", 0 < t < \frac{T_s}{2} \\ s_1(t) = 0, &发送"1", \frac{T_s}{2} < t < T_s \\ s_2(t) = -A, &发送"0", 0 < t < \frac{T_s}{2} \\ s_2(t) = 0, &发送"0" \end{cases} \tag{2.2.2.8} si​(t)=⎩⎪⎪⎪⎨⎪⎪⎪⎧​s1​(t)=A,s1​(t)=0,s2​(t)=−A,s2​(t)=0,​发送"1",0<t<2Ts​​发送"1",2Ts​​<t<Ts​发送"0",0<t<2Ts​​发送"0"​(2.2.2.8)

匹配滤波器/相关接收机输出信号(传输 s1(t)s_1(t)s1​(t) 时), 同公式 (2.2.1.9):
y(t)=r(t)∗h(t)=∫0tr(τ)h(t−τ)dτ=∫0tr(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0t[s1(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ(2.2.2.9)\begin{aligned} y(t) &= r(t) * h(t) \\ &= \int_0^t r(\tau) h(t - \tau) d\tau \\ &= \int_0^t r(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^t [s_1(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ \end{aligned} \tag{2.2.2.9} y(t)​=r(t)∗h(t)=∫0t​r(τ)h(t−τ)dτ=∫0t​r(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0t​[s1​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ​(2.2.2.9)

其中, 匹配滤波器的单位冲激响应 h(t)h(t)h(t), 同公式 (2.2.1.10):
h(t)=s1(T−t)∗c(T−t)(2.2.2.10)h(t) = s_1(T - t) * c(T - t) \tag{2.2.2.10} h(t)=s1​(T−t)∗c(T−t)(2.2.2.10)

在最佳抽样时刻(T=Ts2T=\frac{T_s}{2}T=2Ts​​)进行抽样(传输 s1(t)s_1(t)s1​(t) 时), 同公式(2.2.2.11):
y1≡y(T)=∫0T[s1(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0T[s1(T−t+τ)∗c(T−t+τ)]2dτ+∫0Tnw(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=Es1+Z(2.2.2.11)\begin{aligned} y_1 &\equiv y(T) \\ &= \int_0^T [s_1(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T [s_1(T - t + \tau) * c(T - t + \tau)]^2 d\tau + \int_0^T n_w(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= E_{s1} + Z \\ \end{aligned} \tag{2.2.2.11} y1​​≡y(T)=∫0T​[s1​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​[s1​(T−t+τ)∗c(T−t+τ)]2dτ+∫0T​nw​(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=Es1​+Z​(2.2.2.11)

同理可得传输信号 s2(t)s_2(t)s2​(t) 时同公式 (2.2.2.12):
y2≡y(T)=∫0T[s2(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0T[s2(τ)∗c(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ+∫0Tnw(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=−Es1+Z(2.2.2.12)\begin{aligned} y_2 &\equiv y(T) \\ &= \int_0^T [s_2(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T [s_2(\tau) * c(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau + \int_0^T n_w(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= -E_{s1} + Z \\ \end{aligned} \tag{2.2.2.12} y2​​≡y(T)=∫0T​[s2​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​[s2​(τ)∗c(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ+∫0T​nw​(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=−Es1​+Z​(2.2.2.12)

其中 Es1E_{s1}Es1​ 为传输符号 s1s_1s1​ 时有用信号的能量, ZZZ 为传输符号 s1s_1s1​ 时噪声的能量
Es1=∫0Ts2[s1(τ)∗c(τ)]2dτ(2.2.2.13)E_{s1} = \int_0^{\frac{T_s}{2}} [s_1(\tau) * c(\tau)]^2 d\tau \tag{2.2.2.13} Es1​=∫02Ts​​​[s1​(τ)∗c(τ)]2dτ(2.2.2.13)
Z=∫0Ts2nw(τ)[s1(τ)∗c(τ)]dτ(2.2.2.14)Z = \int_0^{\frac{T_s}{2}} n_w(\tau) [s_1(\tau) * c(\tau)] d\tau \tag{2.2.2.14} Z=∫02Ts​​​nw​(τ)[s1​(τ)∗c(τ)]dτ(2.2.2.14)
E(Z∣s1)=0(2.2.2.15)E(Z | s_1) = 0 \tag{2.2.2.15} E(Z∣s1​)=0(2.2.2.15)
D(Z∣s1)=σ2=E{[Z−E(Z)]2∣s1}=E[∫0Ts2∫0Ts2nw(t1)nw(t2)⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2]=∫0Ts2∫0Ts2E[nw(t1)nw(t2)]⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2=∫0Ts2∫0Ts2Rw(τ)⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2=∫0Ts2∫0Ts2N02δ(τ)⋅[s1(t1)∗c(t1)]⋅[s1(t2)∗c(t2)]dt1dt2=N02Es1(2.2.2.16)\begin{aligned} D(Z | s_1) &= \sigma^2 \\ &= E\bigg\{ [Z - E(Z)]^2 | s_1 \bigg\} \\ &= E\bigg[ \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} n_w(t_1) n_w(t_2) \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \bigg] \\ &= \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} E\bigg[ n_w(t_1) n_w(t_2) \bigg] \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \\ &= \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} R_w(\tau) \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \\ &= \int_0^{\frac{T_s}{2}} \int_0^{\frac{T_s}{2}} \frac{N_0}{2} \delta(\tau) \cdot [s_1(t_1) * c(t_1)] \cdot [s_1(t_2) * c(t_2)] dt_1 dt_2 \\ &= \frac{N_0}{2}E_{s1} \\ \end{aligned} \tag{2.2.2.16} D(Z∣s1​)​=σ2=E{[Z−E(Z)]2∣s1​}=E[∫02Ts​​​∫02Ts​​​nw​(t1​)nw​(t2​)⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​]=∫02Ts​​​∫02Ts​​​E[nw​(t1​)nw​(t2​)]⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​=∫02Ts​​​∫02Ts​​​Rw​(τ)⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​=∫02Ts​​​∫02Ts​​​2N0​​δ(τ)⋅[s1​(t1​)∗c(t1​)]⋅[s1​(t2​)∗c(t2​)]dt1​dt2​=2N0​​Es1​​(2.2.2.16)

  • 其中 τ=t2−t1\tau = t_2 - t_1τ=t2​−t1​

2.2.3 升余弦传输(RC)

图2.2.3.1 升余弦滚降传输系统单位冲激响应与幅度频谱

升余弦传输系统幅度序列 {an}\{a_n\}{an​} 同公式 (2.2.1.1):
an={A,i=1−A,i=2(2.2.3.1)a_n = \begin{cases} A, & i = 1 \\ -A, & i = 2 \end{cases} \tag{2.2.3.1} an​={A,−A,​i=1i=2​(2.2.3.1)

升余弦传输系统冲激序列表达式同公式 (2.2.1.2):
∑n=−∞∞anδ(t−nTs)(2.2.3.2)\sum_{n = - \infty}^{\infty} a_n \delta (t - nT_s) \tag{2.2.3.2} n=−∞∑∞​an​δ(t−nTs​)(2.2.3.2)

对于带限AWGN信道, 其传输函数可视为一个理想低通滤波器:
C(f)={1,∣f∣≤B0,其它(2.2.3.3)C(f) = \begin{cases} 1, &|f| \le B \\ 0, &其它 \\ \end{cases} \tag{2.2.3.3} C(f)={1,0,​∣f∣≤B其它​(2.2.3.3)

其中 BBB 为信道的带宽(低通滤波器地通带宽度)

基带成型网络满足无码间干扰的条件为基带成型网络传输函数需要满足 奈奎斯特第一准则:
Z(f)=∑m=−∞∞H(f+mTs)=K(2.2.3.4)Z(f) = \sum_{m = -\infty}^{\infty} H(f + \cfrac{m}{T_s}) = K \tag{2.2.3.4} Z(f)=m=−∞∑∞​H(f+Ts​m​)=K(2.2.3.4)

其中, H(f)=GT(f)C(f)GR(f)H(f) = G_T(f) C(f) G_R(f)H(f)=GT​(f)C(f)GR​(f) 为基带成型网络的传输函数, KKK 为常数

当发送滤波器 GT(f)G_T(f)GT​(f) 与接收滤波器 GR(f)G_R(f)GR​(f) 采用带宽小于信道带宽 BBB 的根升余弦滤波器时, 则发送信号 s(t)s(t)s(t) 通过带限信道时在理想情况下将不会损失信息.

升余弦传输系统发送信号 s(t)s(t)s(t) 表达式:
s(t)=∑n=−∞∞anhRRC(t−nTs)(2.2.3.5)s(t) = \sum_{n = - \infty}^{\infty} a_n h_{RRC}(t - nT_s) \tag{2.2.3.5} s(t)=n=−∞∑∞​an​hRRC​(t−nTs​)(2.2.3.5)

其中, 由发送滤波器(根升余弦滤波器), 带宽无限信号与接收滤波器(根升余弦滤波器)组成的升余弦基带成型网络的单位脉冲响 hRC(t)h_{RC}(t)hRC​(t) 与系统函数 HRC(f)H_{RC}(f)HRC​(f) 如 图2.2.3.1 所示.
升余弦滚降传输系统(基带成型网络)单位脉冲响应表达式 hRC(t)h_{RC}(t)hRC​(t):
hRC(t)=sa(πtTs)cos(απtTs)1−4α2t2Ts2(2.2.3.6)h_{RC}(t) = sa(\frac{\pi t}{T_s}) \frac{cos(\cfrac{\alpha \pi t}{T_s})}{1 - \cfrac{4 \alpha^2 t^2}{T_s^2}} \tag{2.2.3.6} hRC​(t)=sa(Ts​πt​)1−Ts2​4α2t2​cos(Ts​απt​)​(2.2.3.6)

升余弦滚降传输系统(基带成型网络)系统函数表达式 HRC(f)H_{RC}(f)HRC​(f):
HRC(f)={Ts,∣f∣<12Ts(1−α)Ts2{1−sin⁡[Tsα(f−12Ts)]},∣12Ts(2−α)∣≤∣f∣≤12Ts(1+α)0,∣f∣>12Ts(1+α)(2.2.3.7)H_{RC}(f) = \begin{cases} T_s, &|f| < \frac{1}{2 T_s} (1 - \alpha) \\ \frac{T_s}{2} \big\{ 1 - \sin\big[ \frac{T_s}{\alpha} (f - \frac{1}{2 T_s}) \big] \big\}, &|\frac{1}{2 T_s} (2 - \alpha)| \le |f| \le \frac{1}{2 T_s} (1 + \alpha) \\ 0, &|f| > \frac{1}{2 T_s}(1 + \alpha) \\ \end{cases} \tag{2.2.3.7} HRC​(f)=⎩⎪⎨⎪⎧​Ts​,2Ts​​{1−sin[αTs​​(f−2Ts​1​)]},0,​∣f∣<2Ts​1​(1−α)∣2Ts​1​(2−α)∣≤∣f∣≤2Ts​1​(1+α)∣f∣>2Ts​1​(1+α)​(2.2.3.7)

根升余弦滤波器单位脉冲响应表达式 hRRC(t)h_{RRC}(t)hRRC​(t):
hRRC(t)=4αcos⁡((1+α)πtTs)+sin⁡((1−α)πtTs)4αtTsπTs(1−(4αtTs)2)=sin⁡[(1−α)πtTs]+4αtTscos⁡[(1+α)πtTs]πt[1−(4αtTs)2](2.2.3.8)\begin{aligned} h_{RRC}(t) &= 4 \alpha \frac{\cos(\cfrac{(1 + \alpha) \pi t}{T_s}) + \cfrac{\sin(\cfrac{(1 - \alpha) \pi t}{T_s})}{4 \alpha \cfrac{t}{T_s}}}{\pi \sqrt{T_s}(1 - (\cfrac{4 \alpha t}{T_s})^2)} \\ &= \frac{\sin\bigg[ \cfrac{(1 - \alpha) \pi t}{T_s} \bigg] + \cfrac{4 \alpha t}{T_s} \cos \bigg[ \cfrac{(1 + \alpha) \pi t}{T_s} \bigg]}{\pi t \bigg[ 1 - (\cfrac{4 \alpha t}{T_s})^2 \bigg]} \end{aligned} \tag{2.2.3.8} hRRC​(t)​=4απTs​​(1−(Ts​4αt​)2)cos(Ts​(1+α)πt​)+4αTs​t​sin(Ts​(1−α)πt​)​​=πt[1−(Ts​4αt​)2]sin[Ts​(1−α)πt​]+Ts​4αt​cos[Ts​(1+α)πt​]​​(2.2.3.8)

根升余弦滤波器系统函数表达式 HRRC(f)H_{RRC}(f)HRRC​(f):
HRRC(f)=HRC(f)(2.2.3.9)H_{RRC}(f) = \sqrt{H_{RC}(f)} \tag{2.2.3.9} HRRC​(f)=HRC​(f)​(2.2.3.9)

  • 其中滚降因子 0≤α≤10 \le \alpha \le 10≤α≤1

接收滤波器输入信号, 同公式 (2.2.1.7):
r(t)=si(t)+nw(t)(2.2.3.10)r(t) = s_i(t) + n_w(t) \tag{2.2.3.10} r(t)=si​(t)+nw​(t)(2.2.3.10)

其中
si(t)={s1(t)=AhRRC(t),发送"1"s2(t)=−AhRRC(t),发送"0"(2.2.3.11)s_i(t) = \begin{cases} s_1(t) = Ah_{RRC}(t), &发送"1" \\ s_2(t) = -Ah_{RRC}(t), &发送"0" \end{cases} \tag{2.2.3.11} si​(t)={s1​(t)=AhRRC​(t),s2​(t)=−AhRRC​(t),​发送"1"发送"0"​(2.2.3.11)

匹配滤波器/相关接收机输出信号(传输 s1(t)s_1(t)s1​(t) 时):
y(t)=r(t)∗h(t)=∫0tr(τ)h(t−τ)dτ=∫0tr(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0t[s1(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0t[s1(τ)+nw(τ)]⋅s1(T−t+τ)dτ(2.2.3.12)\begin{aligned} y(t) &= r(t) * h(t) \\ &= \int_0^t r(\tau) h(t - \tau) d\tau \\ &= \int_0^t r(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^t [s_1(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^t [s_1(\tau) + n_w(\tau)] \cdot s_1(T - t + \tau) d\tau \\ \end{aligned} \tag{2.2.3.12} y(t)​=r(t)∗h(t)=∫0t​r(τ)h(t−τ)dτ=∫0t​r(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0t​[s1​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0t​[s1​(τ)+nw​(τ)]⋅s1​(T−t+τ)dτ​(2.2.3.12)

其中, 匹配滤波器的单位冲激响应 h(t)h(t)h(t):
h(t)=s1(T−t)∗c(T−t)=s1(T−t)(2.2.3.13)h(t) = s_1(T - t) * c(T - t) = s_1(T - t) \tag{2.2.3.13} h(t)=s1​(T−t)∗c(T−t)=s1​(T−t)(2.2.3.13)

在最佳抽样时刻(T=TsT=T_sT=Ts​)进行抽样(传输 s1(t)s_1(t)s1​(t) 时), 同公式(2.2.3.11):
y1≡y(T)=∫0T[s1(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0T[s1(T−t+τ)∗c(T−t+τ)]2dτ+∫0Tnw(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0Ts12(T−t+τ)dτ+∫0Tnw(τ)s1(T−t+τ)dτ=Es1+Z(2.2.3.14)\begin{aligned} y_1 &\equiv y(T) \\ &= \int_0^T [s_1(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T [s_1(T - t + \tau) * c(T - t + \tau)]^2 d\tau + \int_0^T n_w(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T {s_1}^2(T - t + \tau) d\tau + \int_0^T n_w(\tau) s_1(T - t + \tau) d\tau \\ &= E_{s1} + Z \\ \end{aligned} \tag{2.2.3.14} y1​​≡y(T)=∫0T​[s1​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​[s1​(T−t+τ)∗c(T−t+τ)]2dτ+∫0T​nw​(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​s1​2(T−t+τ)dτ+∫0T​nw​(τ)s1​(T−t+τ)dτ=Es1​+Z​(2.2.3.14)

同理可得传输信号 s2(t)s_2(t)s2​(t) 时同公式 (2.2.3.12):
y2≡y(T)=∫0T[s2(τ)∗c(t)+nw(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ=∫0T[s2(τ)∗c(τ)]⋅[s1(T−t+τ)∗c(T−t+τ)]dτ+∫0Tnw(τ)[s1(T−t+τ)∗c(T−t+τ)]dτ=−∫0Ts12(T−t+τ)dτ+∫0Tnw(τ)s1(T−t+τ)dτ=−Es1+Z(2.2.3.15)\begin{aligned} y_2 &\equiv y(T) \\ &= \int_0^T [s_2(\tau) * c(t) + n_w(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= \int_0^T [s_2(\tau) * c(\tau)] \cdot [s_1(T - t + \tau) * c(T - t + \tau)] d\tau + \int_0^T n_w(\tau) [s_1(T - t + \tau) * c(T - t + \tau)] d\tau \\ &= - \int_0^T {s_1}^2(T - t + \tau) d\tau + \int_0^T n_w(\tau) s_1(T - t + \tau) d\tau \\ &= -E_{s1} + Z \\ \end{aligned} \tag{2.2.3.15} y2​​≡y(T)=∫0T​[s2​(τ)∗c(t)+nw​(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ=∫0T​[s2​(τ)∗c(τ)]⋅[s1​(T−t+τ)∗c(T−t+τ)]dτ+∫0T​nw​(τ)[s1​(T−t+τ)∗c(T−t+τ)]dτ=−∫0T​s1​2(T−t+τ)dτ+∫0T​nw​(τ)s1​(T−t+τ)dτ=−Es1​+Z​(2.2.3.15)

其中 Es1E_{s1}Es1​ 为传输符号 s1s_1s1​ 时有用信号的能量, ZZZ 为传输符号 s1s_1s1​ 时噪声的能量.
Es1=∫0Tss12(τ)dτ=A2∫0TshRC(τ)dτ(2.2.3.16)E_{s1} = \int_0^{T_s} s_1^2(\tau) d\tau = A^2 \int_0^{T_s} h_{RC}(\tau) d\tau \tag{2.2.3.16} Es1​=∫0Ts​​s12​(τ)dτ=A2∫0Ts​​hRC​(τ)dτ(2.2.3.16)

Z=∫0Tss1(τ)nw(τ)dτ(2.2.3.17)Z = \int_0^{T_s} s_1(\tau) n_w(\tau) d\tau \tag{2.2.3.17} Z=∫0Ts​​s1​(τ)nw​(τ)dτ(2.2.3.17)

E(Z∣s1)=0(2.2.3.18)E(Z | s_1) = 0 \tag{2.2.3.18} E(Z∣s1​)=0(2.2.3.18)

D(Z∣s1)=σ2=E{[Z−E(Z)]2∣s1}=E[∫0Ts∫0Tsnw(t1)nw(t2)s1(t1)s1(t2)dt1dt2]=∫0Ts∫0TsE[nw(t1)nw(t2)]s1(t1)s1(t2)dt1dt2=∫0Ts∫0TsRw(τ)s1(t1)s1(t2)dt1dt2=∫0Ts∫0TsN02δ(τ)s1(t1)s1(t2)dt1dt2=N02Es1(2.2.3.19)\begin{aligned} D(Z | s_1) &= \sigma^2 \\ &= E\bigg\{ [Z - E(Z)]^2 | s_1 \bigg\} \\ &= E\bigg[ \int_0^{T_s} \int_0^{T_s} n_w(t_1) n_w(t_2) s_1(t_1) s_1(t_2) dt_1 dt_2 \bigg] \\ &= \int_0^{T_s} \int_0^{T_s} E\bigg[ n_w(t_1) n_w(t_2) \bigg] s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} R_w(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \int_0^{T_s} \int_0^{T_s} \frac{N_0}{2} \delta(\tau) s_1(t_1) s_1(t_2) dt_1 dt_2 \\ &= \frac{N_0}{2}E_{s1} \\ \end{aligned} \tag{2.2.3.19} D(Z∣s1​)​=σ2=E{[Z−E(Z)]2∣s1​}=E[∫0Ts​​∫0Ts​​nw​(t1​)nw​(t2​)s1​(t1​)s1​(t2​)dt1​dt2​]=∫0Ts​​∫0Ts​​E[nw​(t1​)nw​(t2​)]s1​(t1​)s1​(t2​)dt1​dt2​=∫0Ts​​∫0Ts​​Rw​(τ)s1​(t1​)s1​(t2​)dt1​dt2​=∫0Ts​​∫0Ts​​2N0​​δ(τ)s1​(t1​)s1​(t2​)dt1​dt2​=2N0​​Es1​​(2.2.3.19)

  • 其中 τ=t2−t1\tau = t_2 - t_1τ=t2​−t1​

2.3 信道带宽受限时的 QPSK 传输系统模型

图2.3.1 QPSK传输系统模型

四进制相移键控 (Quandrature Phase-Shift Keying, QPSK) 是一种数字频带传输系统, 具有4个离散相位状态, 如 图2.3.1 所示, 这四个离散的相位状态可表示为:
s1(t)=Acos⁡(ωct+θi)0≤t≤Ts其中i=1,2,3,4(2.3.1)s_1(t) = A \cos(\omega_c t + \theta_i) \qquad 0 \le t \le T_s \qquad 其中 \ i = 1, 2, 3, 4 \tag{2.3.1} s1​(t)=Acos(ωc​t+θi​)0≤t≤Ts​其中 i=1,2,3,4(2.3.1)

图2.3.2 两种QPSK信号相位图

其中第一种相位关系可表示为:
θi=(i−1)⋅π2(2.3.2)\theta_i = (i - 1) \cdot \frac{\pi}{2} \tag{2.3.2} θi​=(i−1)⋅2π​(2.3.2)

带入公式 (2.3.1) 可得:
si(t)=A(cos⁡θi⋅cos⁡ωct−sin⁡θi⋅sin⁡ωct)=A[I(t)⋅cos⁡ωct−Q(t)⋅sin⁡ωct](2.3.3)\begin{aligned} s_i(t) &= A (\cos \theta_i \cdot \cos \omega_c t - \sin \theta_i \cdot \sin \omega_c t) \\ &= A [ I(t) \cdot \cos \omega_c t - Q(t) \cdot \sin \omega_c t ] \end{aligned} \tag{2.3.3} si​(t)​=A(cosθi​⋅cosωc​t−sinθi​⋅sinωc​t)=A[I(t)⋅cosωc​t−Q(t)⋅sinωc​t]​(2.3.3)

其中 I(t)I(t)I(t) 与 Q(t)Q(t)Q(t) 分别为同相分量与正交分量
{I(t)=cos⁡θiQ(t)=sin⁡θi0≤t≤Ts(2.3.4)\begin{cases} I(t) &= \cos \theta_i \\ Q(t) &= \sin \theta_i \\ \end{cases} 0 \le t \le T_s \tag{2.3.4} {I(t)Q(t)​=cosθi​=sinθi​​0≤t≤Ts​(2.3.4)

可令比特, 符号, 相位, 同相分量与正交分量满足如下关系:

b2i+1b_{2 i + 1}b2i+1​ b2ib_{2 i}b2i​ sis_isi​ θi\theta_iθi​ I(t)I(t)I(t) Q(t)Q(t)Q(t)
0 1 s1s_1s1​ 0 1 0
0 0 s2s_2s2​ π2\cfrac{\pi}{2}2π​ 0 1
1 0 s3s_3s3​ π\piπ -1 0
1 1 s4s_4s4​ −π2-\cfrac{\pi}{2}−2π​ 0 -1

第二种相位关系可表示为:
θi=(2i−1)⋅π4(2.3.5)\theta_i = (2 i - 1) \cdot \frac{\pi}{4} \tag{2.3.5} θi​=(2i−1)⋅4π​(2.3.5)

带入公式 (2.3.1) 可得:
si(t)=A(cos⁡θi⋅cos⁡ωct−sin⁡θi⋅sin⁡ωct)=A2[I(t)⋅cos⁡ωct−Q(t)⋅sin⁡ωct](2.3.6)\begin{aligned} s_i(t) &= A (\cos \theta_i \cdot \cos \omega_c t - \sin \theta_i \cdot \sin \omega_c t) \\ &= \cfrac{A}{\sqrt{2}} [ I(t) \cdot \cos \omega_c t - Q(t) \cdot \sin \omega_c t ] \end{aligned} \tag{2.3.6} si​(t)​=A(cosθi​⋅cosωc​t−sinθi​⋅sinωc​t)=2​A​[I(t)⋅cosωc​t−Q(t)⋅sinωc​t]​(2.3.6)

其中 I(t)I(t)I(t) 与 Q(t)Q(t)Q(t) 分别为同相分量与正交分量
{I(t)=2cos⁡θi=±1Q(t)=2sin⁡θi=±10≤t≤Ts(2.3.7)\begin{cases} I(t) &= \sqrt{2} \cos \theta_i = \pm 1 \\ Q(t) &= \sqrt{2} \sin \theta_i = \pm 1 \\ \end{cases} 0 \le t \le T_s \tag{2.3.7} {I(t)Q(t)​=2​cosθi​=±1=2​sinθi​=±1​0≤t≤Ts​(2.3.7)

比特, 符号, 相位, 同相分量与正交分量满足如下关系:

b2i+1b_{2 i + 1}b2i+1​ b2ib_{2 i}b2i​ sis_isi​ θi\theta_iθi​ I(t)I(t)I(t) Q(t)Q(t)Q(t)
0 0 s1s_1s1​ π4\cfrac{\pi}{4}4π​ 1 1
1 0 s2s_2s2​ 3π4\cfrac{3 \pi}{4}43π​ -1 1
1 1 s3s_3s3​ −3π4-\cfrac{3 \pi}{4}−43π​ -1 -1
0 1 s4s_4s4​ π4\cfrac{\pi}{4}4π​ 1 -1

由第二种相位表示中比特序列与同相分量, 正交分量的关系我们可以知道, 二进制奇数比特序列决定了同相分量, 二进制偶数比特序列决定了正交分量, 因此可以使用串并变换将待发送的二进制比特序列转换为两路速率减半的二进制序列.

又因为信道带宽受限, 为了保证信号在通过信道时损失尽可能少的信息, 因此改系统的基带成型网络需要满足奈奎斯特第一准则, 根据之前信道带宽受限的数字基带传输系统中的分析, 图2.3 QPSK传输系统模型 中的发送滤波器与基带匹配滤波器可使用根升余弦滤波器, 其单位冲激响应与系统函数如公式 (2.2.38) 与公式 (2.3.3.19) 所示, 此时支路的符号速率应为 Ts=Tb2T_s = \cfrac{T_b}{2}Ts​=2Tb​​:

根升余弦滤波器单位脉冲响应表达式 hRRC(t)h_{RRC}(t)hRRC​(t).
hRRC(t)=4αcos⁡((1+α)πtTs)+sin⁡((1−α)πtTs)4αtTsπTs(1−(4αtTs)2)=sin⁡[(1−α)πtTs]+4αtTscos⁡[(1+α)πtTs]πt[1−(4αtTs)2](2.3.8)\begin{aligned} h_{RRC}(t) &= 4 \alpha \frac{\cos(\cfrac{(1 + \alpha) \pi t}{T_s}) + \cfrac{\sin(\cfrac{(1 - \alpha) \pi t}{T_s})}{4 \alpha \cfrac{t}{T_s}}}{\pi \sqrt{T_s}(1 - (\cfrac{4 \alpha t}{T_s})^2)} \\ &= \frac{\sin\bigg[ \cfrac{(1 - \alpha) \pi t}{T_s} \bigg] + \cfrac{4 \alpha t}{T_s} \cos \bigg[ \cfrac{(1 + \alpha) \pi t}{T_s} \bigg]}{\pi t \bigg[ 1 - (\cfrac{4 \alpha t}{T_s})^2 \bigg]} \end{aligned} \tag{2.3.8} hRRC​(t)​=4απTs​​(1−(Ts​4αt​)2)cos(Ts​(1+α)πt​)+4αTs​t​sin(Ts​(1−α)πt​)​​=πt[1−(Ts​4αt​)2]sin[Ts​(1−α)πt​]+Ts​4αt​cos[Ts​(1+α)πt​]​​(2.3.8)

根升余弦滤波器系统函数表达式 HRRC(f)H_{RRC}(f)HRRC​(f):
HRRC(f)=HRC(f)(2.3.9)H_{RRC}(f) = \sqrt{H_{RC}(f)} \tag{2.3.9} HRRC​(f)=HRC​(f)​(2.3.9)

  • 其中滚降因子 0≤α≤10 \le \alpha \le 10≤α≤1

符号能量为
Es=∫0Tssi2(τ)dτ=∫0TsA22[I(τ)cos⁡ωcτ−Q(τ)sin⁡ωcτ]2dτ=A22∫0Ts[I2(τ)cos⁡2ωcτ+Q2(τ)sin⁡2ωcτ−2I(τ)Q(τ)cos⁡ωcτsin⁡ωcτ]dτ=A2Ts2(2.3.10)\begin{aligned} E_s &= \int_0^{T_s} s_i^2(\tau) d\tau \\ &= \int_0^{T_s} \cfrac{A^2}{2} [I(\tau) \cos \omega_c \tau - Q(\tau) \sin \omega_c \tau]^2 d\tau \\ &= \cfrac{A^2}{2} \int_0^{T_s} [ I^2(\tau) \cos^2 \omega_c \tau + Q^2(\tau) \sin^2 \omega_c \tau - 2 I(\tau) Q(\tau) \cos \omega_c \tau \sin \omega_c \tau] d\tau \\ &= \cfrac{A^2 T_s}{2} \end{aligned} \tag{2.3.10} Es​​=∫0Ts​​si2​(τ)dτ=∫0Ts​​2A2​[I(τ)cosωc​τ−Q(τ)sinωc​τ]2dτ=2A2​∫0Ts​​[I2(τ)cos2ωc​τ+Q2(τ)sin2ωc​τ−2I(τ)Q(τ)cosωc​τsinωc​τ]dτ=2A2Ts​​​(2.3.10)

其中
{∫0Ts2I(τ)Q(τ)cos⁡ωcτsin⁡ωcτdτ=0I2(t)=(±1)2=1Q2(t)=(±1)2=1(2.3.11)\begin{cases} \int_0^{T_s} 2 I(\tau) Q(\tau) \cos \omega_c \tau \sin \omega_c \tau d\tau = 0 \\ I^2(t) = (\pm 1)^2 = 1 \\ Q^2(t) = (\pm 1)^2 = 1 \\ \end{cases} \tag{2.3.11} ⎩⎪⎨⎪⎧​∫0Ts​​2I(τ)Q(τ)cosωc​τsinωc​τdτ=0I2(t)=(±1)2=1Q2(t)=(±1)2=1​(2.3.11)

下面选择其中一条支路进行分析:
当采用匹配滤波器/相关接收机进行接收时, 在最佳抽样时刻从同向支路的抽样值为
y1=∫0Tsr1(τ)h1(τ)dτ=∫0Ts[si1(τ)+sqi(τ)+nw(τ)]⋅si1=∫0Ts[si12(τ)+sqi(τ)si1(τ)+nw(τ)si1(τ)]dτ=A22∫0TsI2(τ)cos⁡2ωcτdτ+∫0Tsnw(τ)si1(τ)dτ=Es1+Z(2.3.12)\begin{aligned} y_1 &= \int_0^{T_s} r_1(\tau) h_1(\tau) d\tau \\ &= \int_0^{T_s} [s_{i1}(\tau) + s_{qi}(\tau) + n_w(\tau)] \cdot s_{i1} \\ &= \int_0^{T_s} [s_{i1}^2(\tau) + s_{qi}(\tau) s_{i1}(\tau) + n_w(\tau) s_{i1}(\tau)] d\tau \\ &= \cfrac{A^2}{2} \int_0^{T_s} I^2(\tau) \cos^2 \omega_c \tau d\tau + \int_0^{T_s} n_w(\tau) s_{i1}(\tau) d\tau \\ &= E_{s1} + Z \end{aligned} \tag{2.3.12} y1​​=∫0Ts​​r1​(τ)h1​(τ)dτ=∫0Ts​​[si1​(τ)+sqi​(τ)+nw​(τ)]⋅si1​=∫0Ts​​[si12​(τ)+sqi​(τ)si1​(τ)+nw​(τ)si1​(τ)]dτ=2A2​∫0Ts​​I2(τ)cos2ωc​τdτ+∫0Ts​​nw​(τ)si1​(τ)dτ=Es1​+Z​(2.3.12)

y2=∫0Tsr2(τ)h1(τ)dτ=∫0Ts[si2(τ)+sqi(τ)+nw(τ)]⋅si1=∫0Ts[si1(τ)si2(τ)+sqi(τ)si1(τ)+nw(τ)si1(τ)]dτ=−A22∫0TsI2(τ)cos⁡2ωcτdτ+∫0Tsnw(τ)si1(τ)dτ=−Es1+Z(2.3.13)\begin{aligned} y_2 &= \int_0^{T_s} r_2(\tau) h_1(\tau) d\tau \\ &= \int_0^{T_s} [s_{i2}(\tau) + s_{qi}(\tau) + n_w(\tau)] \cdot s_{i1} \\ &= \int_0^{T_s} [s_{i1}(\tau)s_{i2}(\tau) + s_{qi}(\tau) s_{i1}(\tau) + n_w(\tau) s_{i1}(\tau)] d\tau \\ &= -\cfrac{A^2}{2} \int_0^{T_s} I^2(\tau) \cos^2 \omega_c \tau d\tau + \int_0^{T_s} n_w(\tau) s_{i1}(\tau) d\tau \\ &= -E_{s1} + Z \end{aligned} \tag{2.3.13} y2​​=∫0Ts​​r2​(τ)h1​(τ)dτ=∫0Ts​​[si2​(τ)+sqi​(τ)+nw​(τ)]⋅si1​=∫0Ts​​[si1​(τ)si2​(τ)+sqi​(τ)si1​(τ)+nw​(τ)si1​(τ)]dτ=−2A2​∫0Ts​​I2(τ)cos2ωc​τdτ+∫0Ts​​nw​(τ)si1​(τ)dτ=−Es1​+Z​(2.3.13)

其中
{∫0Tssqi(τ)si1(τ)dτ=0si1(t)=h1(t)=A2I1(t)cos⁡ωct=A2cos⁡ω2tsi2(t)=A2I2(t)cos⁡ωct=−A2cos⁡ω2tsqi(t)=−A2Q(t)sin⁡ωct=∓A2sin⁡ωctEs1=A2Ts2=EsE(Z∣si1)=0D(Z∣s1)=σ2=N0Es12=N0Es2(2.3.14)\begin{cases} \int_0^{T_s} s_{qi}(\tau) s_{i1}(\tau) d\tau = 0 \\ s_{i1}(t) = h_1(t) = \cfrac{A}{\sqrt{2}} I_1(t) \cos \omega_c t = \cfrac{A}{\sqrt{2}} \cos \omega_2 t\\ s_{i2}(t) = \cfrac{A}{\sqrt{2}} I_2(t) \cos \omega_c t = -\cfrac{A}{\sqrt{2}} \cos \omega_2 t\\ s_{qi}(t) = -\cfrac{A}{\sqrt{2}} Q(t) \sin \omega_c t = \mp \cfrac{A}{\sqrt{2}} \sin \omega_c t \\ E_{s1} = \cfrac{A^2 T_s}{2} = E_s \\ E(Z | s_{i1}) = 0 \\ D(Z | s_1) = \sigma^2 = \cfrac{N_0 E_{s1}}{2} = \cfrac{N_0 E_s}{2} \\ \end{cases} \tag{2.3.14} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​∫0Ts​​sqi​(τ)si1​(τ)dτ=0si1​(t)=h1​(t)=2​A​I1​(t)cosωc​t=2​A​cosω2​tsi2​(t)=2​A​I2​(t)cosωc​t=−2​A​cosω2​tsqi​(t)=−2​A​Q(t)sinωc​t=∓2​A​sinωc​tEs1​=2A2Ts​​=Es​E(Z∣si1​)=0D(Z∣s1​)=σ2=2N0​Es1​​=2N0​Es​​​(2.3.14)


2.4 信道带宽受限时的 16QAM 传输系统模型

图2.4.1 MQAM传输系统模型

M进制正交幅度调制(M-base Quadrature Amplitude Modulation, MQAM) 是由两个正交载波的多电平振幅键控信号叠加而成, 其两个支路的多电平幅度序列是相互独立的.

MQAM信号表达式:
sMQAM(t)=aicgT(t)cos⁡ωct−aisgT(t)sin⁡ωcti=1,2,⋯,M0≤t≤Ts(2.4.1)s_{MQAM}(t) = a_{i_c} g_T(t) \cos \omega_c t - a_{i_s} g_T(t) \sin \omega_c t \qquad i = 1, 2, \cdots, M \qquad 0 \le t \le T_s \tag{2.4.1} sMQAM​(t)=aic​​gT​(t)cosωc​t−ais​​gT​(t)sinωc​ti=1,2,⋯,M0≤t≤Ts​(2.4.1)

还可以表示为两个归一化正交基函数的线性组合(二维矢量):
si(t)=si1f1(t)+si2f2(t)i=1,2,⋯,M0≤t≤Tssi⃗=[si1,si2]=[aicEg2,aisEg2]i=1,2,⋯,M(2.4.2)\begin{alignedat}{2} s_i(t) &= s_{i1} f_1(t) + s_{i2} f_2(t) \qquad i = 1, 2, \cdots, M \qquad 0 \le t \le T_s \\ \vec{s_i} &= [s_{i1}, s_{i2}] = [a_{i_c} \sqrt{\cfrac{E_g}{2}}, a_{i_s} \sqrt{\cfrac{E_g}{2}}] \qquad i = 1, 2, \cdots, M \\ \end{alignedat} \tag{2.4.2} si​(t)si​​​=si1​f1​(t)+si2​f2​(t)i=1,2,⋯,M0≤t≤Ts​=[si1​,si2​]=[aic​​2Eg​​​,ais​​2Eg​​​]i=1,2,⋯,M​(2.4.2)

其中, 归一化正交基函数:
{f1(t)=2Eggt(t)cos⁡ωctf2(t)=−2Eggt(t)sin⁡ωct0≤t≤Ts(2.4.3)\begin{cases} f_1(t) = \sqrt{\cfrac{2}{E_g}} g_t(t) \cos \omega_c t \\ f_2(t) = -\sqrt{\cfrac{2}{E_g}} g_t(t) \sin \omega_c t \\ \end{cases} 0 \le t \le T_s \tag{2.4.3} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧​f1​(t)=Eg​2​​gt​(t)cosωc​tf2​(t)=−Eg​2​​gt​(t)sinωc​t​0≤t≤Ts​(2.4.3)

系数
{si1=∫0Tsf1(t)dt=aicEg2si2=∫0Tsf2(t)dt=aisEg2i=1,2,⋯,M(2.4.4)\begin{cases} s_{i1} = \int_0^{T_s} f_1(t) dt = a_{i_c} \sqrt{\cfrac{E_g}{2}} \\ s_{i2} = \int_0^{T_s} f_2(t) dt = a_{i_s} \sqrt{\cfrac{E_g}{2}} \\ \end{cases} \qquad i = 1, 2, \cdots, M \tag{2.4.4} ⎩⎪⎪⎨⎪⎪⎧​si1​=∫0Ts​​f1​(t)dt=aic​​2Eg​​​si2​=∫0Ts​​f2​(t)dt=ais​​2Eg​​​​i=1,2,⋯,M(2.4.4)

MQAM信号电平序列应满足
ai=2i−1−Mi=1,2,⋯,M(2.4.5)a_i = 2 i - 1 - \sqrt{M} \qquad i = 1, 2, \cdots, M \tag{2.4.5} ai​=2i−1−M​i=1,2,⋯,M(2.4.5)

因此16QAM信号可取
ai1,ai2∈{−3,−1,1,3}(2.4.6)a_{i1}, a_{i2} \in \{ -3, -1, 1, 3 \} \tag{2.4.6} ai1​,ai2​∈{−3,−1,1,3}(2.4.6)

图2.4.2 矩形星座16QAM信号空间图

同理, 为了保证信号在通过信道时损失尽可能少的信息, 因此改系统的基带成型网络需要满足奈奎斯特第一准则, 根据之前信道带宽受限的数字基带传输系统中的分析, 图2.4.1 MQAM传输系统模型 中的发送滤波器可使用根升余弦滤波器, 其单位冲激响应与系统函数如公式 (2.2.38) 与公式 (2.3.3.19) 所示.

根升余弦滤波器单位脉冲响应表达式 hRRC(t)h_{RRC}(t)hRRC​(t).
hRRC(t)=4αcos⁡((1+α)πtTs)+sin⁡((1−α)πtTs)4αtTsπTs(1−(4αtTs)2)=sin⁡[(1−α)πtTs]+4αtTscos⁡[(1+α)πtTs]πt[1−(4αtTs)2](2.4.7)\begin{aligned} h_{RRC}(t) &= 4 \alpha \frac{\cos(\cfrac{(1 + \alpha) \pi t}{T_s}) + \cfrac{\sin(\cfrac{(1 - \alpha) \pi t}{T_s})}{4 \alpha \cfrac{t}{T_s}}}{\pi \sqrt{T_s}(1 - (\cfrac{4 \alpha t}{T_s})^2)} \\ &= \frac{\sin\bigg[ \cfrac{(1 - \alpha) \pi t}{T_s} \bigg] + \cfrac{4 \alpha t}{T_s} \cos \bigg[ \cfrac{(1 + \alpha) \pi t}{T_s} \bigg]}{\pi t \bigg[ 1 - (\cfrac{4 \alpha t}{T_s})^2 \bigg]} \end{aligned} \tag{2.4.7} hRRC​(t)​=4απTs​​(1−(Ts​4αt​)2)cos(Ts​(1+α)πt​)+4αTs​t​sin(Ts​(1−α)πt​)​​=πt[1−(Ts​4αt​)2]sin[Ts​(1−α)πt​]+Ts​4αt​cos[Ts​(1+α)πt​]​​(2.4.7)

根升余弦滤波器系统函数表达式 HRRC(f)H_{RRC}(f)HRRC​(f):
HRRC(f)=HRC(f)(2.4.8)H_{RRC}(f) = \sqrt{H_{RC}(f)} \tag{2.4.8} HRRC​(f)=HRC​(f)​(2.4.8)

  • 其中滚降因子 0≤α≤10 \le \alpha \le 10≤α≤1

3. 误码性能分析

为方便分析, 假设将要发送的二进制比特序列中 01 等概率出现.


3.1 信道带宽无限时的单极性基带传输

由公式 (2.1.1.11), (2.1.1.12), (2.1.1.13), (2.1.1.14), (2.1.1.15), (2.1.1.16) 可得:
{y1∼N(Es1,σ2)y2∼N(0,σ2)Eb=P(si=s1)Es1+P(si=s2)Es2=Es12=A2Ts2(3.1.1)\begin{cases} y_1 \sim N(E_{s1}, \sigma^2) \\ y_2 \sim N(0, \sigma^2) \\ E_b = P(s_i = s_1)E_{s1} + P(s_i = s_2)E_{s2} = \cfrac{E_{s1}}{2} = \cfrac{A^2 T_s}{2} \\ \end{cases} \tag{3.1.1} ⎩⎪⎪⎨⎪⎪⎧​y1​∼N(Es1​,σ2)y2​∼N(0,σ2)Eb​=P(si​=s1​)Es1​+P(si​=s2​)Es2​=2Es1​​=2A2Ts​​​(3.1.1)

进而得最佳判决门限:
VT=Es12=Eb(3.1.2)V_T= \cfrac{E_{s1}}{2} = E_b \tag{3.1.2} VT​=2Es1​​=Eb​(3.1.2)

图3.1.1 单极性带宽无限基带传输概率密度曲线

由概率密度曲线可知误符号率:
Pe1=Pe2=Q(Es12N0)=Q(EbN0)(3.1.3)P_{e1} = P_{e2} = Q(\sqrt{\frac{E_{s1}}{2 N_0}}) = Q(\sqrt{\frac{E_b}{N_0}}) \tag{3.1.3} Pe1​=Pe2​=Q(2N0​Es1​​​)=Q(N0​Eb​​​)(3.1.3)

误比特率:
Pe=P(si=s1)Pe1+P(si=s2)Pe2=Q(Es12N0)=Q(EbN0)(3.1.4)P_e = P(s_i = s_1)P_{e1} + P(s_i = s_2)P_{e2} = Q(\sqrt{\frac{E_{s1}}{2 N_0}}) = Q(\sqrt{\frac{E_b}{N_0}}) \tag{3.1.4} Pe​=P(si​=s1​)Pe1​+P(si​=s2​)Pe2​=Q(2N0​Es1​​​)=Q(N0​Eb​​​)(3.1.4)


3.2 信道带宽受限时的双极性基带传输

由公式 (2.2.3.14), (2.2.3.15), (2.2.3.16), (2.2.3.17), (2.2.3.18), (2.2.3.19) 可得:
{y1∼N(Es1,σ2)y2∼N(−Es1,σ2)Eb=P(si=s1)Es1+P(si=s2)Es2=Es1(3.2.1)\begin{cases} y_1 \sim N(E_{s1}, \sigma^2) \\ y_2 \sim N(-E_{s1}, \sigma^2) \\ E_b = P(s_i = s_1)E_{s1} + P(s_i = s_2)E_{s2} = E_{s1} \\ \end{cases} \tag{3.2.1} ⎩⎪⎨⎪⎧​y1​∼N(Es1​,σ2)y2​∼N(−Es1​,σ2)Eb​=P(si​=s1​)Es1​+P(si​=s2​)Es2​=Es1​​(3.2.1)

进而得最佳判决门限:
VT=Es1−Es12=0(3.2.2)V_T= \cfrac{E_{s1} - E_{s1}}{2} = 0 \tag{3.2.2} VT​=2Es1​−Es1​​=0(3.2.2)

图3.2.1 双极性带宽受限基带传输概率密度曲线

由概率密度曲线可知误符号率:
Pe1=Pe2=Q(2Es1N0)=Q(2EbN0)(3.2.3)P_{e1} = P_{e2} = Q(\sqrt{\frac{2 E_{s1}}{N_0}}) = Q(\sqrt{\frac{2 E_b}{N_0}}) \tag{3.2.3} Pe1​=Pe2​=Q(N0​2Es1​​​)=Q(N0​2Eb​​​)(3.2.3)

误比特率:
Pe=P(si=s1)Pe1+P(si=s2)Pe2=Q(2Es1N0)=Q(2EbN0)(3.2.4)P_e = P(s_i = s_1)P_{e1} + P(s_i = s_2)P_{e2} = Q(\sqrt{\frac{2 E_{s1}}{N_0}}) = Q(\sqrt{\frac{2 E_b}{N_0}}) \tag{3.2.4} Pe​=P(si​=s1​)Pe1​+P(si​=s2​)Pe2​=Q(N0​2Es1​​​)=Q(N0​2Eb​​​)(3.2.4)


3.3 信道带宽受限时的QPSK传输

由公式 (2.3.13), (2.3.14), (2.3.15) 可得:
{y1∼N(Es1,σ2)y2∼N(−Es1,σ2)Eb=Es1=Es(3.3.1)\begin{cases} y_1 \sim N(E_{s1}, \sigma^2) \\ y_2 \sim N(-E_{s1}, \sigma^2) \\ E_b = E_{s1} = E_s \\ \end{cases} \tag{3.3.1} ⎩⎪⎨⎪⎧​y1​∼N(Es1​,σ2)y2​∼N(−Es1​,σ2)Eb​=Es1​=Es​​(3.3.1)

进而得最佳判决门限:
VT=Es1−Es12=0(3.3.2)V_T= \cfrac{E_{s1} - E_{s1}}{2} = 0 \tag{3.3.2} VT​=2Es1​−Es1​​=0(3.3.2)

图3.3.1 带宽受限BPSK传输概率密度曲线

由概率密度曲线可知一条支路的误符号率:
Pe1=Pe2=Q(2Es1N0)=Q(2EbN0)(3.3.3)P_{e1} = P_{e2} = Q(\sqrt{\frac{2 E_{s1}}{N_0}}) = Q(\sqrt{\frac{2 E_b}{N_0}}) \tag{3.3.3} Pe1​=Pe2​=Q(N0​2Es1​​​)=Q(N0​2Eb​​​)(3.3.3)

由于一条支路接收一个符号后可以获得一个比特的信息, 故 QPSK 传输系统的误比特率等于 BPSK 传输系统的误码率:
PeQPSK=PeBPSK=P(si=s1)Pe1+P(si=s2)Pe2=Q(2Es1N0)=Q(2EbN0)(3.3.4)P_{e QPSK} = P_{e BPSK} = P(s_i = s_1)P_{e1} + P(s_i = s_2)P_{e2} = Q(\sqrt{\frac{2 E_{s1}}{N_0}}) = Q(\sqrt{\frac{2 E_b}{N_0}}) \tag{3.3.4} PeQPSK​=PeBPSK​=P(si​=s1​)Pe1​+P(si​=s2​)Pe2​=Q(N0​2Es1​​​)=Q(N0​2Eb​​​)(3.3.4)


3.4 信道带宽受限时的16QAM传输

图3.4.1 矩形星座16QAM信号控件空间与最小欧氏距离

由图可知, 矩形星座 16QAM 信号空间的最小欧式距离
dmin=2Eg=6Eblog⁡2MM−1=8Eb5(3.4.1)d_{min} = \sqrt{2 E_g} = \sqrt{\cfrac{6 E_b \log_2 M}{M - 1}} = \sqrt{\cfrac{8 E_b}{5}} \tag{3.4.1} dmin​=2Eg​​=M−16Eb​log2​M​​=58Eb​​​(3.4.1)

由于矩形星座 MQAM 的最佳接收误符号率取决于数字基带 MPAM 的误符号率, 故其误符号率为
PM=1−(1−PM)2=2PM−PM2(3.4.2)P_M = 1 - (1 - P_{\sqrt{M}})^2 = 2 P_{\sqrt{M}} - P_{\sqrt{M}}^2 \tag{3.4.2} PM​=1−(1−PM​​)2=2PM​​−PM​2​(3.4.2)

其中 PMP_{\sqrt{M}}PM​​ 表示同相或正交支路 M\sqrt{M}M​ 进制 ASK 的误符号率
PM=2(1−1M)Q(dmin22N0)=32Q(4Eb5N0)(3.4.3)P_{\sqrt{M}} = 2 (1 - \cfrac{1}{\sqrt{M}}) Q(\sqrt{\cfrac{d_{min}^2}{2 N_0}}) = \cfrac{3}{2} Q(\sqrt{\cfrac{4 E_b}{5 N_0}}) \tag{3.4.3} PM​​=2(1−M​1​)Q(2N0​dmin2​​​)=23​Q(5N0​4Eb​​​)(3.4.3)

当采用格雷码, 且 EbN0\cfrac{E_b}{N_0}N0​Eb​​ 较大时, MQAM 的误比特率可近似看做
Pb≈PMlog⁡2M=PM4(3.4.4)P_b \approx \cfrac{P_M}{\log_2 M} = \cfrac{P_M}{4} \tag{3.4.4} Pb​≈log2​MPM​​=4PM​​(3.4.4)


4. 仿真模型与仿真过程

4.1 数字基带传输系统

4.1.1 仿真模型

我将从以下四个维度对数字基带通信系统进行仿真

维度名称 维度属性
信道噪声 无噪声 / 有噪声
电平极性 单极性 / 双极性
发送信号 不归零 / 归零 / 升余弦
信道带宽 带宽无限 / 带宽受限

共组合形成24种数字基带传输系统

系统名称 信道噪声 电平极性 发送信号 信道带宽
无噪单极性不归零带宽无限系统 无噪声 单极性 不归零 带宽无限
无噪单极性不归零带宽受限系统 无噪声 单极性 不归零 带宽受限
无噪单极性归零带宽无限系统 无噪声 单极性 归零 带宽无限
无噪单极性归零带宽受限系统 无噪声 单极性 归零 带宽受限
无噪单极性升余弦带宽无限系统 无噪声 单极性 升余弦 带宽无限
无噪单极性升余弦带宽受限系统 无噪声 单极性 升余弦 带宽受限
无噪双极性不归零带宽无限系统 无噪声 双极性 不归零 带宽无限
无噪双极性不归零带宽受限系统 无噪声 双极性 不归零 带宽受限
无噪双极性归零带宽无限系统 无噪声 双极性 归零 带宽无限
无噪双极性归零带宽受限系统 无噪声 双极性 归零 带宽受限
无噪双极性升余弦带宽无限系统 无噪声 双极性 升余弦 带宽无限
无噪双极性升余弦带宽受限系统 无噪声 双极性 升余弦 带宽受限
有噪单极性不归零带宽无限系统 有噪声 单极性 不归零 带宽无限
有噪单极性不归零带宽受限系统 有噪声 单极性 不归零 带宽受限
有噪单极性归零带宽无限系统 有噪声 单极性 归零 带宽无限
有噪单极性归零带宽受限系统 有噪声 单极性 归零 带宽受限
有噪单极性升余弦带宽无限系统 有噪声 单极性 升余弦 带宽无限
有噪单极性升余弦带宽受限系统 有噪声 单极性 升余弦 带宽受限
有噪双极性不归零带宽无限系统 有噪声 双极性 不归零 带宽无限
有噪双极性不归零带宽受限系统 有噪声 双极性 不归零 带宽受限
有噪双极性归零带宽无限系统 有噪声 双极性 归零 带宽无限
有噪双极性归零带宽受限系统 有噪声 双极性 归零 带宽受限
有噪双极性升余弦带宽无限系统 有噪声 双极性 升余弦 带宽无限
有噪双极性升余弦带宽受限系统 有噪声 双极性 升余弦 带宽受限

仿真参数

参数名称 参数值(单位)
仿真起始时间 0 s
仿真终止时间 1 s
抽样频率 1024 Hz
传输比特速率 64 bit/s
全频带AWGN信噪比 0 dB

4.1.2 仿真过程

4.1.2.1 待发射信号的二进制比特序列与脉冲序列

图4.1.2.1.1 需要传输的二进制比特序列与脉冲序列


4.1.2.2 信道中的信号与通过接收滤波器的信号


4.1.2.2.1 单极性不归零带宽无限系统

图4.1.2.2.1.1 无噪单极性不归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.1.2 有噪单极性不归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.2 单极性不归零带宽受限系统

图4.1.2.2.2.1 无噪单极性不归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.2.2 有噪单极性不归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.3 单极性归零带宽无限系统

图4.1.2.2.3.1 无噪单极性归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.3.2 有噪单极性归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.4 单极性归零带宽受限系统

图4.1.2.2.4.1 无噪单极性归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.4.1.2 有噪单极性归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.5 单极性升余弦带宽无限系统

图4.1.2.2.5.1 无噪单极性升余弦带宽无限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.5.2 有噪单极性升余弦带宽无限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.6 单极性升余弦带宽受限系统

图4.1.2.2.6.1 无噪单极性升余弦带宽受限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.6.2 有噪单极性升余弦带宽受限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.7 双极性不归零带宽无限系统

图4.1.2.2.7.1 无噪双极性不归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.7.2 有噪双极性不归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.8 双极性不归零带宽受限系统

图4.1.2.2.8.1 无噪双极性不归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.8.2 有噪双极性不归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.9 双极性归零带宽无限系统

图4.1.2.2.9.1 无噪双极性归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.9.2 有噪双极性归零带宽无限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.10 双极性归零带宽受限系统

图4.1.2.2.10.1 无噪双极性归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.10.2 有噪双极性归零带宽受限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.11 双极性升余弦带宽无限系统

图4.1.2.2.11.1 无噪双极性升余弦带宽无限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.11.2 有噪双极性升余弦带宽无限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.2.12 双极性升余弦带宽受限系统

图4.1.2.2.12.1 无噪双极性升余弦带宽受限系统 - 信道中的信号与通过接收滤波器的信号

图4.1.2.2.12.2 有噪双极性升余弦带宽受限系统 - 信道中的信号与通过接收滤波器的信号


4.1.2.3 抽样保持后的的序列与判决后的序列


4.1.2.3.1 单极性不归零带宽无限系统

图4.1.2.3.1.1 无噪单极性不归零带宽无限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.1.2 有噪单极性不归零带宽无限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.2 单极性不归零带宽受限系统

图4.1.2.3.2.1 无噪单极性不归零带宽受限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.2.2 有噪单极性不归零带宽受限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.3 单极性归零带宽无限系统

图4.1.2.3.3.1 无噪单极性归零带宽无限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.3.2 有噪单极性归零带宽无限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.4 单极性归零带宽受限系统

图4.1.2.3.4.1 无噪单极性归零带宽受限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.4.1.2 有噪单极性归零带宽受限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.5 单极性升余弦带宽无限系统

图4.1.2.3.5.1 无噪单极性升余弦带宽无限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.5.2 有噪单极性升余弦带宽无限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.6 单极性升余弦带宽受限系统

图4.1.2.3.6.1 无噪单极性升余弦带宽受限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.6.2 有噪单极性升余弦带宽受限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.7 双极性不归零带宽无限系统

图4.1.2.3.7.1 无噪双极性不归零带宽无限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.7.2 有噪双极性不归零带宽无限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.8 双极性不归零带宽受限系统

图4.1.2.3.8.1 无噪双极性不归零带宽受限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.8.2 有噪双极性不归零带宽受限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.9 双极性归零带宽无限系统

图4.1.2.3.9.1 无噪双极性归零带宽无限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.9.2 有噪双极性归零带宽无限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.10 双极性归零带宽受限系统

图4.1.2.3.10.1 无噪双极性归零带宽受限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.10.2 有噪双极性归零带宽受限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.11 双极性升余弦带宽无限系统

图4.1.2.3.11.1 无噪双极性升余弦带宽无限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.11.2 有噪双极性升余弦带宽无限系统 - 抽样保持后的的序列与判决后的序列


4.1.2.3.12 双极性升余弦带宽受限系统

图4.1.2.3.12.1 无噪双极性升余弦带宽受限系统 - 抽样保持后的的序列与判决后的序列

图4.1.2.3.12.2 有噪双极性升余弦带宽受限系统 - 抽样保持后的的序列与判决后的序列


4.2 数字频带传输系统-带宽受限 QPSK 传输

4.2.1 仿真模型

仿真参数

参数名称 参数值(单位)
仿真起始时间 0 s
仿真终止时间 1 s
抽样频率 4096 Hz
传输比特速率 64 bit/s
载波频率 256 Hz
载波振幅 2\sqrt{2}2​
全频带AWGN信噪比 -10 dB
带通滤波器下限截止频率 192 Hz
带通滤波器上限截止频率 320 Hz
带通滤波器阶数 8
发送滤波器 根升余弦滤波器
接收滤波器滤波器 根升余弦滤波器

4.2.2 仿真过程


4.2.2.1 QPSK-待传输信号的二进制比特序列

图4.2.2.1.1 QPSK-待传输信号的二进制比特序列


4.2.2.2 QPSK-待传输信号的基带波形与频带波形

图4.2.2.2.1 QPSK-待传输信号的基带波形与频带波形


4.2.2.3 QPSK-信道传输波形

图4.2.2.3.1 QPSK-信道传输波形


4.2.2.4 QPSK-接收机解调波形

图4.2.2.4.1 QPSK-接收机解调波形


4.2.2.5 QPSK-接收机归一化接收波形

图4.2.2.5.1 QPSK-接收机归一化接收波形


4.2.2.6 QPSK-接收机抽样序列

图4.2.2.6.1 QPSK-接收机抽样序列


4.2.2.7 QPSK-接收的二进制序列

图4.2.2.7.1 QPSK-接收的二进制序列


4.3 数字频带传输系统-带宽受限 16QAM 传输

4.3.1 仿真模型

参数名称 参数值(单位)
仿真起始时间 0 s
仿真终止时间 1 s
抽样频率 4096 Hz
传输比特速率 128 bit/s
载波频率 512 Hz
载波振幅 2\sqrt{2}2​
全频带AWGN信噪比 -10 dB
带通滤波器下限截止频率 224 Hz
带通滤波器上限截止频率 288 Hz
带通滤波器阶数 8
发送滤波器 根升余弦滤波器
接收滤波器滤波器 根升余弦滤波器

4.3.2 仿真过程


4.2.3.1 16QAM-待传输信号的比特与符号序列

图4.2.3.1.1 16QAM-待传输信号的比特与符号序列


4.2.3.2 16QAM-待传输信号的基带波形与频带波形

图4.2.3.2.1 16QAM-待传输信号的基带波形与频带波形


4.2.3.3 16QAM-信道传输波形

图4.2.3.3.1 16QAM-信道传输波形


4.2.3.4 16QAM-接收机解调波形

图4.2.3.4.1 16QAM-接收机解调波形


4.2.3.5 16QAM-接收机归一化接收波形

图4.2.3.5.1 16QAM-接收机归一化接收波形


4.2.3.6 16QAM-接收机抽样序列

图4.2.3.6.1 16QAM-接收机抽样序列


4.2.3.7 16QAM-接收的二进制序列

图4.2.3.7.1 16QAM-接收的二进制序列


5. 仿真结果与分析

5.1 数字基带传输系统

5.1.1 仿真结果

5.1.1.1 有噪单极性不归零带宽无限系统

图5.1.1.1.1 误比特率曲线-有噪单极性不归零带宽无限系统


5.1.1.2 有噪单极性不归零带宽受限系统

图5.1.1.2.1 误比特率曲线-有噪单极性不归零带宽受限系统


5.1.1.3 有噪单极性归零带宽无限系统

图5.1.1.3.1 误比特率曲线-有噪单极性归零带宽无限系统


5.1.1.4 有噪单极性归零带宽受限系统

图5.1.1.4.1 误比特率曲线-有噪单极性归零带宽受限系统


5.1.1.5 有噪单极性升余弦带宽无限系统

图5.1.1.5.1 误比特率曲线-有噪单极性升余弦带宽无限系统


5.1.1.6 有噪单极性升余弦带宽受限系统

图5.1.1.6.1 误比特率曲线-有噪单极性升余弦带宽受限系统


5.1.1.7 有噪双极性不归零带宽无限系统

图5.1.1.7.1 误比特率曲线-有噪双极性不归零带宽无限系统


5.1.1.8 有噪双极性不归零带宽受限系统

图5.1.1.8.1 误比特率曲线-有噪双极性不归零带宽受限系统


5.1.1.9 有噪双极性归零带宽无限系统

图5.1.1.9.1 误比特率曲线-有噪双极性归零带宽无限系统


5.1.1.10 有噪双极性归零带宽受限系统

图5.1.1.10.1 误比特率曲线-有噪双极性归零带宽受限系统


5.1.1.11 有噪双极性升余弦带宽无限系统

图5.1.1.11.1 误比特率曲线-有噪双极性升余弦带宽无限系统


5.1.1.12 有噪双极性升余弦带宽受限系统

图5.1.1.12.1 误比特率曲线-有噪双极性升余弦带宽受限系统


5.1.2 仿真结果分析

信道带宽无限时单极性基带传输

误比特率如公式 (3.1.4)所示
Pe=Q(Es12N0)=Q(EbN0)=Q(SNR)(5.1.2.1)P_e = Q(\sqrt{\frac{E_{s1}}{2 N_0}}) = Q(\sqrt{\frac{E_b}{N_0}}) = Q(\sqrt{SNR}) \tag{5.1.2.1} Pe​=Q(2N0​Es1​​​)=Q(N0​Eb​​​)=Q(SNR​)(5.1.2.1)

误比特率-信噪比 理论值曲线如下图所示

图5.1.2.1 理论误比特率曲线-Q(√E/N)

误比特率-信噪比 仿真值曲线如下图所示

图5.1.2.2 误比特率曲线-有噪单极性不归零带宽无限系统

对比 图5.1.2.1 理论误比特率曲线-Q(√E/N)图5.1.2.2 误比特率曲线-有噪单极性不归零带宽无限系统 可以发现, 理论值与仿真值之间出现了较大的误差, 这是由于匹配滤波器可以看做一个低通滤波器, 因此计算仿真的信噪比时错误使用了全频带噪声功率, 实际应使用通频带噪声功率.

修正误差后的仿真误比特率曲线

图5.1.2.3 有噪单极性不归零带宽无限系统-仿真误比特率曲线-误差修正后

将参与计算的噪声功率修正为 $N = \cfrac{N_0 \cdot 2 r_s}{F_s} $ 后, 仿真结果如 图5.1.2.3 有噪单极性不归零带宽无限系统-仿真误比特率曲线-误差修正后 所示, 将其与 图5.1.2.1 理论误比特率曲线-Q(√E/N) 对比可以发现, 此时在误差允许的范围内可以认为理论分析结果符合实际.


信道带宽受限时的双极性基带传输

误比特率如公式 (3.2.4)所示
Pe=Q(Es12N0)=Q(2Es1N0)=Q(2EbN0)(5.1.2.2)P_e = Q(\sqrt{\frac{E_{s1}}{2 N_0}}) = Q(\sqrt{\frac{2 E_{s1}}{N_0}}) = Q(\sqrt{\frac{2 E_b}{N_0}}) \tag{5.1.2.2} Pe​=Q(2N0​Es1​​​)=Q(N0​2Es1​​​)=Q(N0​2Eb​​​)(5.1.2.2)

误比特率-信噪比 理论值曲线如下图所示

图5.1.2.4 理论误比特率曲线-Q(√E/N)

误比特率-信噪比 仿真值曲线如下图所示

图5.1.2.5 仿真误比特率曲线-有噪双极性升余弦带宽受限系统

对比 图5.1.2.4 理论误比特率曲线图5.1.2.5 仿真误比特率曲线-有噪双极性升余弦带宽受限系统 可以发现, 理论值与仿真值之间出现了较大的误差, 这是由于仿真过程中使用低通滤波器模拟带限信号, 因此计算仿真的信噪比时错误使用了全频带噪声功率, 实际应使用通频带噪声功率.

修正误差后的仿真误比特率曲线

图5.1.2.6 有噪双极性升余弦带宽无限信号-仿真误比特率曲线-误差修正后

将参与计算的噪声功率修正为 $N = \cfrac{N_0 \cdot 2 r_s}{F_s} $ 后, 仿真结果如 图5.1.2.6 有噪双极性升余弦带宽无限信号-仿真误比特率曲线-误差修正后 所示, 将其与 图5.1.2.4 理论误比特率曲线-Q(√E/N) 对比可以发现, 此时在误差允许的范围内可以认为理论分析结果符合实际.


5.2 数字频带传输系统-QPSK

5.2.1 仿真结果

图5.2.1 QPSK-仿真误比特率曲线


5.2.2 仿真结果分析

误比特率如公式 (3.3.4)所示
Pe=Q(Es12N0)=Q(2Es1N0)=Q(2EbN0)(5.2.2.1)P_e = Q(\sqrt{\frac{E_{s1}}{2 N_0}}) = Q(\sqrt{\frac{2 E_{s1}}{N_0}}) = Q(\sqrt{\frac{2 E_b}{N_0}}) \tag{5.2.2.1} Pe​=Q(2N0​Es1​​​)=Q(N0​2Es1​​​)=Q(N0​2Eb​​​)(5.2.2.1)

误比特率-信噪比 理论值曲线如下图所示

图5.2.2.1 理论误比特率曲线-Q(√E/N)

对比 图5.2.2.1 理论误比特率曲线-Q(√E/N)图5.2.1 QPSK-仿真误比特率曲线 可以发现, 使用通频带噪声功率计算接收机输入信号的信噪比, 在理论值与仿真值之间依然出现了较大的误差, 仿真误比特率小于理论值, 误差产生的原因可能为模拟带宽受限信道的带通滤波器的通频带过宽, 因此在计算接收机的输入信号信噪比时噪声功率偏大, 进而造成信噪比偏小, 相同信噪比条件下仿真误比特率小于理论值.

修正误差后的仿真误比特率曲线

图5.2.2.2 QPSK-仿真误比特率曲线-误差修正后

将带通滤波器的通频带宽度设置为符号速率的2倍后, 修正误差后的仿真结果如 图5.2.2.2 QPSK-仿真误比特率曲线-误差修正后 所示, 将其与 图5.2.2.1 理论误比特率曲线-Q(√E/N) 对比可以发现, 此时在误差允许的范围内可以认为理论分析结果符合实际.


5.3 数字频带传输系统-16QAM

5.3.1 仿真结果

图5.3.1 16QAM-误比特率曲线


5.3.2 仿真结果分析

误比特率如公式 (3.4.4)所示
Pe=≈PMlog⁡2M=PM4=34Q(4Eb5N)(5.3.2.1)P_e = \approx \cfrac{P_M}{\log_2 M} = \cfrac{P_M}{4} = \cfrac{3}{4} Q(\sqrt{\cfrac{4 E_b}{5 N}}) \tag{5.3.2.1} Pe​=≈log2​MPM​​=4PM​​=43​Q(5N4Eb​​​)(5.3.2.1)

误比特率-信噪比 理论值曲线如下图所示

图5.2.2.1 理论误比特率曲线-16QAM

对比 图5.2.2.1图5.3.1, 在误差允许的范围内可以认为理论分析结果符合实际.


6. 结论

图6.1 理论误比特率曲线

  1. 由于仿真时生成的 AWGN 是一个离散的值, 因此需要使用提高采样频率以获得近似高斯分布的噪声.
  2. 为了获得较为准确的误比特率结果, 在仿真过程中可以采用延长仿真时间, 提高比特传输速率, 多次仿真并累加的方法提高传输的比特数.
  3. 当信噪比相同时, 双极性传输系统的误码率均小于单极性传输系统, 这是由于双极性传输系统的符号的最小欧氏距离较单极性传输系统的最小欧氏距离更大, 因此判决错误的概率更小.
  4. 当信噪比相同时, 信道带宽受限传输系统的误码率比信道带宽无限传输系统略大, 这是因为理想的根升余弦滤波器是非因果的, 物理上无法实现, 因此在信道的阻带残留有一部分频率分量, 这一部分分量无法通过模拟带限信道的滤波器, 因此造成了一定的误差.
  5. 由于模拟带限信道的低通/带通滤波器的通带宽度直接决定了输入接收机的噪声功率, 因此滤波器的通带带宽应设置为满足无码间干扰条件(奈奎斯特第一准则)的最小带宽.
  6. 通过本次不知道用了多少个小时的仿真实验, 我更加深入地理解了数字基带传输系统与数字传输系统所, 系统地掌握了信道通频带带宽与信噪比对传输系统误比特率的影响, 并通过实验验证了理论的正确性.

7. 参考资料

[1] 现代通信原理9.1:数字系统通用模型.
[2] 现代通信原理9.2:数字基带传输系统模型.
[3] 数字传输系统信号传输及误码性能分析.
[4] 数字传输系统的最佳接收与误码分析.
[5] 通信原理仿真报告-数字传输系统的最佳接收与误码分析.
[6] Python3中列表list合并的四种方法.
[7] python中的stem函数参数解析.
[8] numpy.linspace().
[9] python中调用matplotlib画图,各种中文标注乱码强力解决办法.
[10] python字符串格式化.
[11] 【数据展示】matplotlib子图设置子标题(subtitle for subplot).
[12] matplotlib可视化篇stem()–棉棒图.
[13] Python 函数图像figure使用matplot保存 保存最大化的图像.
[14] 使用python中的matplotlib 画图,show后关闭窗口,继续运行命令.
[15] python print输出到文件.
[16] matplotlib 中子图subplot 绘图时标题重叠解决办法(备忘).
[17] 在PYTHON中用MATPLOTLIB绘制对数坐标轴.
[18] Latex中的空格.


8. 附录

8.1 环境依赖

Package Version Remark
matplotlib 3.3.2 Matplotlib is a comprehensive library for creating static, animated, and interactive visualizations in Python.
numpy 1.19.2 The fundamental package for scientific computing with Python
scikit-commpy 0.5.0 CommPy is an open source toolkit implementing digital communications algorithms in Python using NumPy and SciPy.
scipy 1.5.2 SciPy (pronounced “Sigh Pie”) is a Python-based ecosystem of open-source software for mathematics, science, and engineering.

8.2 仿真顶层程序 DTS-sim

# -*- coding: utf-8 -*-
# DTS-sim.py# %% 配置导入
# from scipy import signal
# from scipy import fft
# from commpy import filters# import random
import math
import baseBand
import frequencyBand
import numpy as npfrom scipy.stats import norm
# import matplotlib.pyplot as plt
from matplotlib import font_managerimport utils# %% 全局参数设置
font = font_manager.FontProperties(fname=r"font/YaHei Consolas Hybrid.ttf")  # 用于显示中文的字体文件(严格等宽)
save_path = "assignment/communication-principles/simulation-4/images/%s.png"  # 图窗保存为图片的路径# %% 数字基带-进行仿真并绘制&保存图像
error_rate = baseBand.simulation(font=font,time_begin=0,time_end=1,f_sample=1024,frequency=64,snr=0,seed=3,show=True,save=True
)# %% 数字基带-统计误比特率
snr_list = list(range(-30, 11))  # 需要遍历的信噪比
error_rate_info_list = []  # 各信噪比的信息
for snr in snr_list:error_rate_info_list.append(baseBand.simulation(font=font,time_begin=0,time_end=64,f_sample=1024,frequency=64,snr=snr,seed=3,show=False,save=False))
name_list = list(filter(lambda name: name[0:2] == r"有噪", error_rate_info_list[0]["name"]))  # 有噪通信方式的名称
error_rate_dict = {name: dict() for name in name_list}
# name: snr: 通信方式 name 在具有 snr dB AWGN时的误比特率信息
rate_dic = dict()
# name: [通信方式 name 关于 snr_list 的一维数组]
with open(r'./assignment/communication-principles/simulation-4/data.md', 'w') as f:for name in name_list:for i, snr in enumerate(snr_list):error_rate_dict[name][snr] = error_rate_info_list[i].get(name)error_rate_list = [error_rate_dict[name][snr] for snr in snr_list]# 通信方式 name 关于 snr 的所有信息rate_dic[name] = [rate[3] for rate in error_rate_list]# 通信方式 name 关于 snr 的误比特率print("\n## %s\n|信噪比(dB)|误比特数|传输比特数|误比特率|\n|:-:|:-:|:-:|:-:|" % name, file=f)for rate in error_rate_list:print("|%d|%d|%d|%e|" % (rate[0], rate[1], rate[2], rate[3]), file=f)# %% 数字基带-绘制误比特率关于SNR的曲线
figure_i = 51
for name in name_list:figure_title = "Figure-%02d-误比特率曲线-%s" % (figure_i, name)utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[snr_list],axis_ys=[rate_dic[name]],axes_titles=["误比特率曲线-%s" % name],label_xs=[r"SNR / dB"],label_ys=[r"P"] * 2,formats=['b-,'],labels=[r"P_b"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title))figure_i += 1
utils.show()# %% QPSK-进行仿真并绘制&保存图像
frequencyBand.QPSK_simulation(show=True,save=True
)# %% QPSK-统计误比特率
sim_info_QPSK_list = []
for snr_QPSK in range(-40, 1):sim_info_QPSK_list.append(frequencyBand.QPSK_simulation(font=font,time_begin=0,time_end=1,f_sample=1 << (12 + 7),frequency=[1 << (6 + 7), 1 << (8 + 7)],snr=snr_QPSK,seed=3,show=False,save=False))
# print(sim_info)# %% QPSK-保存数据
snr_QPSK_list = [info[1] for info in sim_info_QPSK_list]
error_rate_QPSK_list = [info[-1] for info in sim_info_QPSK_list]
with open(r'./assignment/communication-principles/simulation-4/data-QPSK.md', 'w') as f:print("\n## QPSK仿真误比特数据\n|全频带信噪比(dB)|通带信噪比(dB)|信号功率|全频带噪声功率|噪声双边功率谱密度|通带噪声功率|误比特数|传输比特数|误比特率|\n|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|", file=f)for info in sim_info_QPSK_list:print("|%d|%0.2f|%e|%e|%e|%e|%d|%d|%e|" % info, file=f)# %% QPSK-绘制误比特率关于SNR的曲线
figure_i = 77
figure_title = "Figure-%02d-QPSK-误比特率曲线" % (figure_i)
utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[snr_QPSK_list],axis_ys=[error_rate_QPSK_list],axes_titles=["误比特率曲线-%s" % "QPSK"],label_xs=[r"SNR / dB"],label_ys=[r"P"] * 2,formats=['b-,'],labels=[r"P_e"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title)
)# %% 16QAM-进行仿真并绘制&保存图像
frequencyBand.MQAM_simulation(show=True,save=True
)# %% 16QAM-统计误比特率
sim_info_16QAM_list = []
for snr_16QAM in range(-40, 1):sim_info_16QAM_list.append(frequencyBand.MQAM_simulation(font=font,time_begin=0,time_end=1,f_sample=1 << (12 + 7),frequency=[1 << (6 + 7), 1 << (8 + 7)],snr=snr_16QAM,seed=3,show=False,save=False))
# print(sim_info)# %% 16QAM-保存数据
snr_16QAM_list = [info[1] for info in sim_info_16QAM_list]
error_rate_16QAM_list = [info[-1] for info in sim_info_16QAM_list]
with open(r'./assignment/communication-principles/simulation-4/data-16QAM.md', 'w') as f:print("\n## 16QAM仿真误比特数据\n|全频带信噪比(dB)|通带信噪比(dB)|信号功率|全频带噪声功率|噪声双边功率谱密度|通带噪声功率|误比特数|传输比特数|误比特率|\n|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|:-:|", file=f)for info in sim_info_16QAM_list:print("|%d|%0.2f|%e|%e|%e|%e|%d|%d|%e|" % info, file=f)# %% 16QAM-绘制误比特率关于SNR的曲线
figure_i = 87
figure_title = "Figure-%02d-16QAM-误比特率曲线" % (figure_i)
utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[snr_16QAM_list],axis_ys=[error_rate_16QAM_list],axes_titles=["误比特率曲线-%s" % "16QAM"],label_xs=[r"SNR / dB"],label_ys=[r"P"] * 2,formats=['b-,'],labels=[r"P_e"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title)
)# %%
utils.show()# %% 计算理论误比特率
SNR_dB_list = np.linspace(-20, 10, 301)
SNR_list = [math.pow(10, SNR_dB / 10) for SNR_dB in SNR_dB_list]
P_E_list_1 = [norm.cdf(-math.sqrt(SNR)) for SNR in SNR_list]
P_E_list_2 = [norm.cdf(-math.sqrt(2 * SNR)) for SNR in SNR_list]
P_E_list_3 = [0.75 * norm.cdf(-math.sqrt(0.8 * SNR)) for SNR in SNR_list]
print(P_E_list_3)# %% 分别绘制曲线
figure_i = 90
figure_title = "Figure-%02d-理论误比特率曲线-Q(√E/N)" % (figure_i)
utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[SNR_dB_list],axis_ys=[P_E_list_1],axes_titles=["理论误比特率曲线-%s" % r"Q(√E/N)"],label_xs=[r"SNR / dB"],label_ys=[r"P"],formats=['r-,'],labels=[r"P = Q(√E/N)"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title)
)figure_i = 91
figure_title = "Figure-%02d-理论误比特率曲线-Q(√2E/N)" % (figure_i)
utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[SNR_dB_list],axis_ys=[P_E_list_2],axes_titles=["理论误比特率曲线-%s" % r"Q(√2E/N)"],label_xs=[r"SNR / dB"],label_ys=[r"P"],formats=['g-,'],labels=[r"P = Q(√2E/N)"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title)
)figure_i = 92
figure_title = "Figure-%02d-理论误比特率曲线-16QAM" % (figure_i)
utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[SNR_dB_list],axis_ys=[P_E_list_3],axes_titles=["理论误比特率曲线-%s" % r"16QAM"],label_xs=[r"SNR / dB"],label_ys=[r"P"],formats=['b-,'],labels=[r"P_16QAM"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title)
)# %% 在同一个图表中绘制曲线
figure_i = 93
figure_title = "Figure-%02d-理论误比特率曲线" % (figure_i)
utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[SNR_dB_list],axis_ys=[P_E_list_1],axes_titles=["理论误比特率曲线"],label_xs=[r"SNR / dB"],label_ys=[r"P"],formats=['r-,'],labels=[r"P = Q(√E/N)"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True
)utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[SNR_dB_list],axis_ys=[P_E_list_2],axes_titles=["理论误比特率曲线"],label_xs=[r"SNR / dB"],label_ys=[r"P"],formats=['g-,'],labels=[r"P = Q(√2E/N)"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True
)utils.drawWave(figure_i=figure_i,row_i=1,column_j=1,figure_title=figure_title,font=font,axis_xs=[SNR_dB_list],axis_ys=[P_E_list_3],axes_titles=["理论误比特率曲线"],label_xs=[r"SNR / dB"],label_ys=[r"P"],formats=['b-,'],labels=[r"P_16QAM"],label_locs=[r"upper right"],limit_ys=[None],linewidths=[1],scale_xs=['linear'],scale_ys=['log'],maximize=True,save_path=(save_path % figure_title)
)# %%
utils.show()

8.3 实用程序 utils.py

# -*- coding: utf-8 -*-
# utils.py# %% 导入库
import numpy as np
import matplotlib.pyplot as plt
# help(plt.psd)s# %% 加性高斯白噪声生成函数
def wgn(x, snr, seed=7):'''加入高斯白噪声 Additive White Gaussian Noise:param x: 原始信号:param snr: 信噪比:param seed: 随机种子:return: 噪声, 信号功率, 噪声功率'''np.random.seed(seed)  # 设置随机种子snr = 10 ** (snr / 10.0)xpower = np.sum(x ** 2) / len(x)npower = xpower / snrreturn np.random.randn(len(x)) * np.sqrt(npower), xpower, npower# %% 波形绘制函数(曲线图)
def drawWave(figure_i,row_i,column_j,figure_title,font,axis_xs,axis_ys,axes_titles,label_xs,label_ys,formats,labels,label_locs,limit_ys,linewidths,scale_xs,scale_ys,maximize=False,save_path=None
):"""@param:figure_i: 图窗编号row_i: 图表的行数column_j: 图表的列数figure_title: 窗口标题font: 字体axis_xs: 横轴数据-1Daxis_ys: 纵轴数据-1Daxes_titles: 子图标题-1Dlabel_xs: 横轴标签-1Dlabel_ys: 纵轴标签-1Dformats: 曲线格式(颜色 风格 标记)-1D颜色:'b' 蓝色(blue)(默认)'g' 绿色(green)'r' 红色(red)'y' 黄色(yellow)'k' 黑色(black)'w' 白色(white)'c' 青绿色(cyan)'m' 洋红色(magenta)'#xxxxxx'   RGB颜色'0.xxx' 灰度风格:'-' 实线(默认)':' 虚线' ' 无线条'--'    破折线'-.'    点划线标记:'.' 点(默认)',' 极小点'o' 实心圆'^' 正三角'v' 倒三角'>' 右三角'<' 左三角'1' 下花三角'2' 上花三角'3' 左花三角'4' 右花三角's' 实心方形(square)'p' 实心五边形(pentagon)'*' 星形'h' 竖六边形(hexagon)'H' 横六边形'+' 十字'x' 叉形'D' 菱形(diamond)'d' 瘦菱形'|' 垂直线labels: 曲线标签内容-1Dlabel_locs: 曲线标签位置-1D0 "best 最佳位置(默认)1 "upper right" 右上2 "upper left" 左上3 "lower right" 右下4 "lower left" 左下limit_ys: 坐标轴下限与上限-1DNone: 自动选择纵轴数据的最小值与最大值linewidths: 线宽scale_xs: 横坐标形式-1Dscale_ys: 纵坐标形式-1D'linear': 线性刻度'log': 对数刻度maximize: 是否最大化显示图窗(默认为否)save_path: 图窗保存文件路径None: 不保存图窗@return:fig: 图窗对象"""fig = plt.figure(figure_i)fig.canvas.set_window_title(figure_title)# chart_formate = row_i * 100 + column_j * 10for i in range(row_i * column_j):# ax = fig.add_subplot(chart_formate + 1 + i)ax = fig.add_subplot(row_i, column_j, i+1)ax.plot(axis_xs[i],axis_ys[i],formats[i],label=labels[i],linewidth=linewidths[i])  # 横轴, 纵轴, 标签ax.legend(loc=label_locs[i], prop=font)  # 标签位置if limit_ys[i] is not None:ax.set_ylim(limit_ys[i])  # 纵轴刻度范围ax.grid()  # 显示网格线ax.set_title(axes_titles[i], fontproperties=font)  # 子图标题ax.set_xlabel(label_xs[i], fontproperties=font)  # 数据标签ax.set_ylabel(label_ys[i], fontproperties=font)  # 数据标签ax.set_xscale(scale_xs[i])  # 横轴刻度类型ax.set_yscale(scale_ys[i])  # 纵轴刻度类型setSpacing()if maximize:maximizeFigure()if save_path is not None:saveFigure(save_path)return fig# %% 序列绘制函数(棉棒图)
def drawSequence(figure_i,row_i,column_j,figure_title,font,axis_xs,axis_ys,axes_titles,label_xs,linefmts,markerfmts,basefmts,bottoms,labels,label_locs,limit_ys,maximize=False,save_path=None
):"""@param:figure_i: 图窗编号row_i: 图表的行数column_j: 图表的列数figure_title: 窗口标题font: 字体axis_xs: 横轴数据-1Daxis_ys: 纵轴数据-1Daxes_titles: 子图标题-1Dlabel_xs: 横轴标签-1Dlinefmts: 棉棒的样式(颜色 风格)-1D颜色:'b' 蓝色(blue)(默认)'g' 绿色(green)'r' 红色(red)'y' 黄色(yellow)'k' 黑色(black)'w' 白色(white)'c' 青绿色(cyan)'m' 洋红色(magenta)'#xxxxxx'   RGB颜色'0.xxx' 灰度风格:'-' 实线(默认)'--'    破折线'-.'    点划线':' 虚线' ' 无线条markerfmts: 棉球的样式(颜色 样式)-1D颜色:'b' 蓝色(blue)(默认)'g' 绿色(green)'r' 红色(red)'y' 黄色(yellow)'k' 黑色(black)'w' 白色(white)'c' 青绿色(cyan)'m' 洋红色(magenta)'#xxxxxx'   RGB颜色'0.xxx' 灰度样式:'.' 点(默认)',' 极小点'o' 实心圆'^' 正三角'v' 倒三角'>' 右三角'<' 左三角'1' 下花三角'2' 上花三角'3' 左花三角'4' 右花三角's' 实心方形(square)'p' 实心五边形(pentagon)'*' 星形'h' 竖六边形(hexagon)'H' 横六边形'+' 十字'x' 叉形'D' 菱形(diamond)'d' 瘦菱形'|' 垂直线basefmts: 基线的样式(颜色 风格)-1D颜色:'b' 蓝色(blue)(默认)'g' 绿色(green)'r' 红色(red)'y' 黄色(yellow)'k' 黑色(black)'w' 白色(white)'c' 青绿色(cyan)'m' 洋红色(magenta)'#xxxxxx'   RGB颜色'0.xxx' 灰度风格:'-' 实线(默认)'--'    破折线'-.'    点划线':' 虚线' ' 无线条bottoms: 基线的位置, 默认为0-1Dlabels: 曲线标签内容-1Dlabel_locs: 曲线标签位置-1D0 "best 最佳位置(默认)1 "upper right" 右上2 "upper left" 左上3 "lower right" 右下4 "lower left" 左下limit_ys: 坐标轴下限与上限-1DNone: 自动选择纵轴数据的最小值与最大值maximize: 是否最大化显示图窗(默认为否)save_path: 图窗保存文件路径None: 不保存图窗@return:fig: 图窗对象"""fig = plt.figure(figure_i)fig.canvas.set_window_title(figure_title)# chart_formate = row_i * 100 + column_j * 10for i in range(row_i * column_j):# ax = fig.add_subplot(chart_formate + 1 + i)ax = fig.add_subplot(row_i, column_j, i+1)ax.stem(axis_xs[i],axis_ys[i],linefmt=linefmts[i],markerfmt=markerfmts[i],basefmt=basefmts[i],bottom=bottoms[i],label=labels[i])  # 横轴, 纵轴, 标签ax.legend(loc=label_locs[i], prop=font)  # 标签位置if limit_ys[i] is not None:ax.set_ylim(limit_ys[i])  # 纵轴刻度范围ax.grid()  # 显示网格线ax.set_xlabel(label_xs[i], fontproperties=font)ax.set_title(axes_titles[i], fontproperties=font)setSpacing()  # 设置最佳间距(消除图表信息重叠)if maximize:maximizeFigure()  # 最大化窗口显示if save_path is not None:saveFigure(save_path)  # 将图窗保存为文件return fig# %% 功率密度谱绘制函数
def drawPSD(figure_i,row_i,column_j,label_x,axis_ys,F_samples,limit_ys):"""param:figure_i: 图窗编号row_i: 图表的行数column_j: 图表的列数label_x: 横轴标签axis_ys: 纵轴数据-1DF_samples: 抽样频率-1Dlimit_ys: 坐标轴下限与上限-1D"""fig = plt.figure(figure_i)chart_formate = row_i * 100 + column_j * 10for i in range(row_i * column_j):ax = fig.add_subplot(chart_formate + 1 + i)ax.psd(axis_ys[i], Fs=F_samples[i])if limit_ys[i] is not None:ax.set_ylim(limit_ys[i])  # 纵轴刻度范围ax.grid()  # 显示网格线ax.set_xlabel(label_x)# %% 显示所有图窗
def show():plt.show()# %% 关闭窗口
def close(fig):plt.close(fig)# %% 最大化显示图窗
def maximizeFigure():plt.get_current_fig_manager().window.state('zoomed')# %% 保存图窗
def saveFigure(save_path):plt.savefig(save_path, bbox_inches='tight')# %% 设置子图间距
def setSpacing(pad=1.08):plt.tight_layout(pad)

8.4 数字基带系统仿真模块 baseBand.py

变量名 变量值
b 需要进行传输的二进制比特序列
delta[0] 单极性脉冲序列
delta[1] 双极性脉冲序列
y_t 通过接收滤波器的信号
y 抽样保持后的序列
b_hat 传输完成后接收的二进制比特序列
变量名称组成部分 变量属性
s 无噪
r 加噪
unipolar 单极性
polar 双极性
NRZ 不归零
RZ 归零
rcos 升余弦
带宽无限
limited 带宽受限
# -*- coding: utf-8 -*-
# baseBand.py# %% 配置导入
from scipy import signal
# from scipy import fft
from commpy import filters
from matplotlib import font_managerimport random
import numpy as npimport utils# %% 参数设置
# # %% 参数设置
font_default = font_manager.FontProperties(fname=r"font/YaHei Consolas Hybrid.ttf")  # 用于显示中文的字体文件(严格等宽)
save_path = "assignment/communication-principles/simulation-4/images/%s.png"  # 图窗保存为图片的路径def simulation(font=font_default, time_begin=0, time_end=1, f_sample=1024, frequency=32, snr=0, seed=3, show=False, save=False):"""@param:font: 图示字体time_begin: 起始时间time_end: 终止时间f_sample: 采样频率frequency: 信号频率snr: AWGN生成时的信噪比, 单位(dB)seed: AWGN发生器随机种子show: 是否显示图形save: 是否保存图形@reutrn:error_rate: 误比特率的字典, key为传输方式的名称, value为(全频带信噪比(dB), 误比特数, 传输比特数, 误比特率, 通带信噪比(dB))"name": 所有传输方式名称的列表"""# %% 参数设置time_length = time_end - time_begin  # 时长points = f_sample * time_length  # 栅网采样点数# frequency = 16  # 信号频率samples_per_period = f_sample / frequency  # 每周期采样点数period_num = time_length * frequency  # 共采样多少周期amplitude = [(0, 1), (-1, 1)]  # 振幅, (0, 1)为单极性线路编码, (-1, 1)为双极性线路编码duty_ratio = [1, 0.5]  # 占空比, 1为不归零码, 0.5为占空比为0.5的归零码# zoom = 4  # 频谱缩放倍数# display_interval = 1.25  # 显示区间的系数tick = [(-0.5, 1.5), (-1.5, 1.5)]  # 波形绘制纵轴刻度下限与上限filter_order = 8  # 滤波器的阶数f_H_LPF = frequency * 2  # 低通滤波器的上限截止频率# f_H_BPF_DSB = frequency[1] + frequency[0] * 2  # 带通滤波器的上限截止频率# f_L_BPF_DSB = frequency[1] - frequency[0] * 2  # 带通滤波器的下限截止频率""" 变量名称组成部分eval(variable_name[0][i] + '_' \+ variable_name[1][0][i] + '_' \+ variable_name[1][1][j] + '_' \+ variable_name[1][2][k] + '_' \+ variable_name[1][3][l])[0]: 传输过程[0]: 信道中的信号[1]: 通过接收滤波器的信号[2]: 抽样保持后的的序列[3]: 判决后的序列[1]: 变量属性[0]: 是否有噪声[0]: 无噪声[1]: 有噪声[1]: 极性[0]: 单极性[1]: 双极性[2]: 信号生成方式[0]: 不归零信号[1]: 归零信号[2]: 升余弦信号[3]: 信道带宽[0]: 带宽无限[1]: 带宽受限"""variable_name = [[r"", r"y_t_", r"y_", r"b_hat_"],[(r"s", r"r"),(r"unipolar", r"polar"),(r"NRZ", r"RZ", r"rcos"),(r"", r"_limited")]]""" 标题名称组成部分子图标题:title_name[0][i]窗口标题:title_name[1][0][j] \+ title_name[1][1][k] \+ title_name[1][2][l] \+ title_name[1][3][m] \[0]: 传输过程[0]: 信道中的信号[1]: 通过接收滤波器的信号[2]: 抽样保持后的的序列[3]: 判决后的序列[1]: 变量属性[0]: 是否有噪声[0]: 无噪声[1]: 有噪声[1]: 极性[0]: 单极性[1]: 双极性[2]: 信号生成方式[0]: 不归零信号[1]: 归零信号[2]: 升余弦信号[3]: 信道带宽[0]: 带宽无限[1]: 带宽受限"""title_name = [[r"信道中的信号", r"通过接收滤波器的信号", r"抽样保持后的的序列", r"判决后的序列"],[(r"无噪", r"有噪"),(r"单极性", r"双极性"),(r"不归零", r"归零", r"升余弦"),(r"带宽无限信号", r"带宽受限信号")]]# %% 生成时域波bbt = np.linspace(time_begin, time_end, points, endpoint=False)  # 生成时域栅网b = [1] * (int(period_num) >> 1) + [0] * (int(period_num) >> 1)  # 生成01等概的二进制序列n = np.array(range(len(b)))  # 生成序列序号random.shuffle(b)  # 将二进制序列打乱, 生成01等概的二进制随机序列delta = []  # 生成窄脉冲序列for i in range(len(amplitude)):delta.append([])for i in b:for j in range(len(amplitude)):delta[j] += [amplitude[j][i]]delta[j] += [0] * int(samples_per_period - 1)# delta[j] += [amplitude[j][i]] * int(samples_per_period * duty_ratio[j])# delta[j] += [0] * int(samples_per_period * (1 - duty_ratio[j]))# %% 升余弦滤波器与根升余弦滤波器冲激响应序列生成# g_rcosfilter = filters.rcosfilter(points, 0.5, 1/frequency, f_sample)[1]  # 升余弦滤波器冲激响应g_rrcosfilter = filters.rrcosfilter(points, 0.5, 1/frequency, f_sample)[1]  # 根升余弦滤波器冲激响应g_rrcosfilter_normalization_factor = 1/samples_per_period  # 归一化系数# plt.plot(g_rrcosfilter)# plt.plot(np.abs(fft.fft(g_rrcosfilter[0:100]))# plt.plot(g_rcosfilter)# plt.plot(np.abs(fft.fft(g_rcosfilter[0:100]))# %% 单极性与双极性基带传输的发送/接收滤波器冲激响应序列生成g_NRZ = np.zeros((points,), dtype=int)  # 不归零码 发送/接收滤波器 单位冲激响应g_NRZ[0:int(samples_per_period * duty_ratio[0])] = 1g_NRZ_normalization_factor = 1/(samples_per_period * duty_ratio[0])  # 归一化系数# plt.plot(g_NRZ)g_t_RZ = np.zeros((points,), dtype=int)  # 归零码 发送滤波器 单位冲激响应g_t_RZ[0:int(samples_per_period * duty_ratio[1])] = 1# plt.plot(g_t_RZ)g_r_RZ = np.zeros((points,), dtype=int)  # 归零码 接收滤波器 单位冲激响应g_r_RZ[int(samples_per_period * duty_ratio[1]):int(samples_per_period)] = 1g_r_RZ_normalization_factor = 1/(samples_per_period * duty_ratio[1])  # 归一化系数# plt.plot(g_r_RZ)# %% 发送序列生成s_unipolar_NRZ = signal.convolve(delta[0], g_NRZ)[0:points]  # 单极性不归零码发送序列s_unipolar_RZ = signal.convolve(delta[0], g_t_RZ)[0:points]  # 单极性归零码发送序列s_unipolar_rcos_calculate = signal.convolve(delta[0], g_rrcosfilter)  # 计算用单极性根升余弦发送序列(未截断滤波器延迟)s_unipolar_rcos = s_unipolar_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用单极性根升余弦发送序列s_polar_NRZ = signal.convolve(delta[1], g_NRZ)[0:points]  # 双极性不归零码发送序列s_polar_RZ = signal.convolve(delta[1], g_t_RZ)[0:points]  # 双极性归零码发送序列s_polar_rcos_calculate = signal.convolve(delta[1], g_rrcosfilter)  # 计算用双极性升余弦发送序列(未截断滤波器延迟)s_polar_rcos = s_polar_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用双极性升余弦发送序列# plt.plot(s_unipolar_NRZ)# plt.plot(s_unipolar_RZ)# plt.plot(s_unipolar_rcos_calculate)# plt.plot(s_polar_NRZ)# plt.plot(s_polar_RZ)# plt.plot(s_polar_rcos_calculate)# %% 为发送序列加入AWGN噪声r_unipolar_NRZ = s_unipolar_NRZ + utils.wgn(s_unipolar_NRZ, snr, seed)[0]r_unipolar_RZ = s_unipolar_RZ + utils.wgn(s_unipolar_RZ, snr, seed)[0]r_unipolar_rcos_calculate = s_unipolar_rcos_calculate + utils.wgn(s_unipolar_rcos_calculate, snr, seed) * np.sqrt(2)[0]r_unipolar_rcos = r_unipolar_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用单极性根升余弦发送序列r_polar_NRZ = s_polar_NRZ + utils.wgn(s_polar_NRZ, snr, seed)[0]r_polar_RZ = s_polar_RZ + utils.wgn(s_polar_RZ, snr, seed)[0]r_polar_rcos_calculate = s_polar_rcos_calculate + utils.wgn(s_polar_rcos_calculate, snr, seed) * np.sqrt(2)[0]r_polar_rcos = r_polar_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用双极性升余弦发送序列# %% 滤波器参数"""滤波器构造函数(仅介绍Butterworth滤波器)scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba')输入参数:N:滤波器的阶数Wn:归一化截止频率。计算公式Wn=2*截止频率/采样频率。(注意:根据采样定理,采样频率要大于两倍的信号本身最大的频率,才能还原信号。截止频率一定小于信号本身最大的频率,所以Wn一定在0和1之间)。当构造带通滤波器或者带阻滤波器时,Wn为长度为2的列表。btype : 滤波器类型{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’},output : 输出类型{‘ba’, ‘zpk’, ‘sos’},输出参数:b,a: IIR滤波器的分子(b)和分母(a)多项式系数向量。output='ba'z,p,k: IIR滤波器传递函数的零点、极点和系统增益. output= 'zpk'sos: IIR滤波器的二阶截面表示。output= 'sos'函数的使用信号滤波中最常用的无非低通滤波、高通滤波和带通滤波。下面简单介绍这三种滤波的使用过程:(1).高通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以下频率成分,即截至频率为10hz,则wn=2*10/1000=0.02# from scipy import signal# b, a = signal.butter(8, 0.02, 'highpass')# filtedData = signal.filtfilt(b, a, data)#data为要过滤的信号(2).低通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以上频率成分,即截至频率为10hz,则wn=2*10/1000=0.02# from scipy import signal# b, a = signal.butter(8, 0.02, 'lowpass')# filtedData = signal.filtfilt(b, a, data)       #data为要过滤的信号(3).带通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以下和400hz以上频率成分,即截至频率为10hz和400hz,则wn1=2*10/1000=0.02,wn2=2*400/1000=0.8。Wn=[0.02,0.8]# from scipy import signal# b, a = signal.butter(8, [0.02,0.8], 'bandpass')# filtedData = signal.filtfilt(b, a, data)   #data为要过滤的信号"""wn_LPF = 2 * f_H_LPF / f_sampleb_LPF, a_LPF = signal.butter(filter_order, wn_LPF, 'lowpass')  # 配置滤波器# %% 进行滤波, 模拟带限信道"""滤波函数scipy.signal.filtfilt(b, a, x, axis=-1, padtype='odd', padlen=None, method='pad', irlen=None)输入参数:b: 滤波器的分子系数向量a: 滤波器的分母系数向量x: 要过滤的数据数组。(array型)axis: 指定要过滤的数据数组x的轴padtype: 必须是“奇数”、“偶数”、“常数”或“无”。这决定了用于过滤器应用的填充信号的扩展类型。{‘odd’, ‘even’, ‘constant’, None}padlen:在应用滤波器之前在轴两端延伸X的元素数目。此值必须小于要滤波元素个数 - 1。(int型或None)method:确定处理信号边缘的方法。当method为“pad”时,填充信号;填充类型padtype和padlen决定,irlen被忽略。当method为“gust”时,使用古斯塔夫森方法,而忽略padtype和padlen。{“pad” ,“gust”}irlen:当method为“gust”时,irlen指定滤波器的脉冲响应的长度。如果irlen是None,则脉冲响应的任何部分都被忽略。对于长信号,指定irlen可以显著改善滤波器的性能。(int型或None)输出参数:y: 滤波后的数据数组"""s_unipolar_NRZ_limited = signal.filtfilt(b_LPF, a_LPF, s_unipolar_NRZ)s_unipolar_RZ_limited = signal.filtfilt(b_LPF, a_LPF, s_unipolar_RZ)s_unipolar_rcos_limited_calculate = signal.filtfilt(b_LPF, a_LPF, s_unipolar_rcos_calculate)s_unipolar_rcos_limited = s_unipolar_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用s_polar_NRZ_limited = signal.filtfilt(b_LPF, a_LPF, s_polar_NRZ)s_polar_RZ_limited = signal.filtfilt(b_LPF, a_LPF, s_polar_RZ)s_polar_rcos_limited_calculate = signal.filtfilt(b_LPF, a_LPF, s_polar_rcos_calculate)s_polar_rcos_limited = s_polar_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用r_unipolar_NRZ_limited = signal.filtfilt(b_LPF, a_LPF, r_unipolar_NRZ)r_unipolar_RZ_limited = signal.filtfilt(b_LPF, a_LPF, r_unipolar_RZ)r_unipolar_rcos_limited_calculate = signal.filtfilt(b_LPF, a_LPF, r_unipolar_rcos_calculate)r_unipolar_rcos_limited = r_unipolar_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用r_polar_NRZ_limited = signal.filtfilt(b_LPF, a_LPF, r_polar_NRZ)r_polar_RZ_limited = signal.filtfilt(b_LPF, a_LPF, r_polar_RZ)r_polar_rcos_limited_calculate = signal.filtfilt(b_LPF, a_LPF, r_polar_rcos_calculate)r_polar_rcos_limited = r_polar_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用# %% 通过接收滤波器y_t_s_unipolar_NRZ = signal.convolve(s_unipolar_NRZ, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_unipolar_RZ = signal.convolve(s_unipolar_RZ, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_unipolar_rcos = signal.convolve(s_unipolar_rcos_calculate, g_rrcosfilter)[points:points+points]y_t_s_polar_NRZ = signal.convolve(s_polar_NRZ, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_polar_RZ = signal.convolve(s_polar_RZ, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_polar_rcos = signal.convolve(s_polar_rcos_calculate, g_rrcosfilter)[points:points+points]y_t_r_unipolar_NRZ = signal.convolve(r_unipolar_NRZ, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_unipolar_RZ = signal.convolve(r_unipolar_RZ, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_unipolar_rcos = signal.convolve(r_unipolar_rcos_calculate, g_rrcosfilter)[points:points+points]y_t_r_polar_NRZ = signal.convolve(r_polar_NRZ, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_polar_RZ = signal.convolve(r_polar_RZ, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_polar_rcos = signal.convolve(r_polar_rcos_calculate, g_rrcosfilter)[points:points+points]y_t_s_unipolar_NRZ_limited = signal.convolve(s_unipolar_NRZ_limited, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_unipolar_RZ_limited = signal.convolve(s_unipolar_RZ_limited, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_unipolar_rcos_limited = signal.convolve(s_unipolar_rcos_limited_calculate, g_rrcosfilter)[points:points+points]y_t_s_polar_NRZ_limited = signal.convolve(s_polar_NRZ_limited, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_polar_RZ_limited = signal.convolve(s_polar_RZ_limited, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_s_polar_rcos_limited = signal.convolve(s_polar_rcos_limited_calculate, g_rrcosfilter)[points:points+points]y_t_r_unipolar_NRZ_limited = signal.convolve(r_unipolar_NRZ_limited, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_unipolar_RZ_limited = signal.convolve(r_unipolar_RZ_limited, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_unipolar_rcos_limited = signal.convolve(r_unipolar_rcos_limited_calculate, g_rrcosfilter)[points:points+points]y_t_r_polar_NRZ_limited = signal.convolve(r_polar_NRZ_limited, g_NRZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_polar_RZ_limited = signal.convolve(r_polar_RZ_limited, g_r_RZ)[int(samples_per_period/2):int(samples_per_period/2)+points]y_t_r_polar_rcos_limited = signal.convolve(r_polar_rcos_limited_calculate, g_rrcosfilter)[points:points+points]# %% 幅值归一化y_t_s_unipolar_NRZ = y_t_s_unipolar_NRZ * g_NRZ_normalization_factory_t_s_unipolar_RZ = y_t_s_unipolar_RZ * g_r_RZ_normalization_factory_t_s_unipolar_rcos = y_t_s_unipolar_rcos * g_rrcosfilter_normalization_factory_t_s_polar_NRZ = y_t_s_polar_NRZ * g_NRZ_normalization_factory_t_s_polar_RZ = y_t_s_polar_RZ * g_r_RZ_normalization_factory_t_s_polar_rcos = y_t_s_polar_rcos * g_rrcosfilter_normalization_factory_t_r_unipolar_NRZ = y_t_r_unipolar_NRZ * g_NRZ_normalization_factory_t_r_unipolar_RZ = y_t_r_unipolar_RZ * g_r_RZ_normalization_factory_t_r_unipolar_rcos = y_t_r_unipolar_rcos * g_rrcosfilter_normalization_factory_t_r_polar_NRZ = y_t_r_polar_NRZ * g_NRZ_normalization_factory_t_r_polar_RZ = y_t_r_polar_RZ * g_r_RZ_normalization_factory_t_r_polar_rcos = y_t_r_polar_rcos * g_rrcosfilter_normalization_factory_t_s_unipolar_NRZ_limited = y_t_s_unipolar_NRZ_limited * g_NRZ_normalization_factory_t_s_unipolar_RZ_limited = y_t_s_unipolar_RZ_limited * g_r_RZ_normalization_factory_t_s_unipolar_rcos_limited = y_t_s_unipolar_rcos_limited * g_rrcosfilter_normalization_factory_t_s_polar_NRZ_limited = y_t_s_polar_NRZ_limited * g_NRZ_normalization_factory_t_s_polar_RZ_limited = y_t_s_polar_RZ_limited * g_r_RZ_normalization_factory_t_s_polar_rcos_limited = y_t_s_polar_rcos_limited * g_rrcosfilter_normalization_factory_t_r_unipolar_NRZ_limited = y_t_r_unipolar_NRZ_limited * g_NRZ_normalization_factory_t_r_unipolar_RZ_limited = y_t_r_unipolar_RZ_limited * g_r_RZ_normalization_factory_t_r_unipolar_rcos_limited = y_t_r_unipolar_rcos_limited * g_rrcosfilter_normalization_factory_t_r_polar_NRZ_limited = y_t_r_polar_NRZ_limited * g_NRZ_normalization_factory_t_r_polar_RZ_limited = y_t_r_polar_RZ_limited * g_r_RZ_normalization_factory_t_r_polar_rcos_limited = y_t_r_polar_rcos_limited * g_rrcosfilter_normalization_factor# %% 抽样保持y_s_unipolar_NRZ = y_t_s_unipolar_NRZ[int(samples_per_period/2):len(y_t_s_unipolar_NRZ):int(samples_per_period)]y_s_unipolar_RZ = y_t_s_unipolar_RZ[int(samples_per_period/2):len(y_t_s_unipolar_RZ):int(samples_per_period)]y_s_unipolar_rcos = y_t_s_unipolar_rcos[0:len(y_t_s_unipolar_rcos):int(samples_per_period)]y_s_polar_NRZ = y_t_s_polar_NRZ[int(samples_per_period/2):len(y_t_s_polar_NRZ):int(samples_per_period)]y_s_polar_RZ = y_t_s_polar_RZ[int(samples_per_period/2):len(y_t_s_polar_RZ):int(samples_per_period)]y_s_polar_rcos = y_t_s_polar_rcos[0:len(y_t_s_polar_rcos):int(samples_per_period)]y_r_unipolar_NRZ = y_t_r_unipolar_NRZ[int(samples_per_period/2):len(y_t_r_unipolar_NRZ):int(samples_per_period)]y_r_unipolar_RZ = y_t_r_unipolar_RZ[int(samples_per_period/2):len(y_t_r_unipolar_RZ):int(samples_per_period)]y_r_unipolar_rcos = y_t_r_unipolar_rcos[0:len(y_t_r_unipolar_rcos):int(samples_per_period)]y_r_polar_NRZ = y_t_r_polar_NRZ[int(samples_per_period/2):len(y_t_r_polar_NRZ):int(samples_per_period)]y_r_polar_RZ = y_t_r_polar_RZ[int(samples_per_period/2):len(y_t_r_polar_RZ):int(samples_per_period)]y_r_polar_rcos = y_t_r_polar_rcos[0:len(y_t_r_polar_rcos):int(samples_per_period)]y_s_unipolar_NRZ_limited = y_t_s_unipolar_NRZ_limited[int(samples_per_period/2):len(y_t_s_unipolar_NRZ_limited):int(samples_per_period)]y_s_unipolar_RZ_limited = y_t_s_unipolar_RZ_limited[int(samples_per_period/2):len(y_t_s_unipolar_RZ_limited):int(samples_per_period)]y_s_unipolar_rcos_limited = y_t_s_unipolar_rcos_limited[0:len(y_t_s_unipolar_rcos_limited):int(samples_per_period)]y_s_polar_NRZ_limited = y_t_s_polar_NRZ_limited[int(samples_per_period/2):len(y_t_s_polar_NRZ_limited):int(samples_per_period)]y_s_polar_RZ_limited = y_t_s_polar_RZ_limited[int(samples_per_period/2):len(y_t_s_polar_RZ_limited):int(samples_per_period)]y_s_polar_rcos_limited = y_t_s_polar_rcos_limited[0:len(y_t_s_polar_rcos_limited):int(samples_per_period)]y_r_unipolar_NRZ_limited = y_t_r_unipolar_NRZ_limited[int(samples_per_period/2):len(y_t_r_unipolar_NRZ_limited):int(samples_per_period)]y_r_unipolar_RZ_limited = y_t_r_unipolar_RZ_limited[int(samples_per_period/2):len(y_t_r_unipolar_RZ_limited):int(samples_per_period)]y_r_unipolar_rcos_limited = y_t_r_unipolar_rcos_limited[0:len(y_t_r_unipolar_rcos_limited):int(samples_per_period)]y_r_polar_NRZ_limited = y_t_r_polar_NRZ_limited[int(samples_per_period/2):len(y_t_r_polar_NRZ_limited):int(samples_per_period)]y_r_polar_RZ_limited = y_t_r_polar_RZ_limited[int(samples_per_period/2):len(y_t_r_polar_RZ_limited):int(samples_per_period)]y_r_polar_rcos_limited = y_t_r_polar_rcos_limited[0:len(y_t_r_polar_rcos_limited):int(samples_per_period)]# %% Debug# plt.stem(n, y_r_polar_rcos, linefmt='k-', markerfmt='ko', basefmt='b--', bottom=0)# %% 判决b_hat_s_unipolar_NRZ = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_s_unipolar_NRZ)))b_hat_s_unipolar_RZ = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_s_unipolar_RZ)))b_hat_s_unipolar_rcos = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_s_unipolar_rcos)))b_hat_s_polar_NRZ = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_s_polar_NRZ)))b_hat_s_polar_RZ = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_s_polar_RZ)))b_hat_s_polar_rcos = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_s_polar_rcos)))b_hat_r_unipolar_NRZ = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_r_unipolar_NRZ)))b_hat_r_unipolar_RZ = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_r_unipolar_RZ)))b_hat_r_unipolar_rcos = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_r_unipolar_rcos)))b_hat_r_polar_NRZ = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_r_polar_NRZ)))b_hat_r_polar_RZ = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_r_polar_RZ)))b_hat_r_polar_rcos = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_r_polar_rcos)))b_hat_s_unipolar_NRZ_limited = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_s_unipolar_NRZ_limited)))b_hat_s_unipolar_RZ_limited = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_s_unipolar_RZ_limited)))b_hat_s_unipolar_rcos_limited = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_s_unipolar_rcos_limited)))b_hat_s_polar_NRZ_limited = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_s_polar_NRZ_limited)))b_hat_s_polar_RZ_limited = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_s_polar_RZ_limited)))b_hat_s_polar_rcos_limited = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_s_polar_rcos_limited)))b_hat_r_unipolar_NRZ_limited = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_r_unipolar_NRZ_limited)))b_hat_r_unipolar_RZ_limited = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_r_unipolar_RZ_limited)))b_hat_r_unipolar_rcos_limited = np.array(list(map(lambda y: 1 if y >= 0.5 else 0, y_r_unipolar_rcos_limited)))b_hat_r_polar_NRZ_limited = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_r_polar_NRZ_limited)))b_hat_r_polar_RZ_limited = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_r_polar_RZ_limited)))b_hat_r_polar_rcos_limited = np.array(list(map(lambda y: 1 if y >= 0 else 0, y_r_polar_rcos_limited)))# %% Debug# plt.stem(n, b_hat_s_unipolar_NRZ, linefmt='k-', markerfmt='ko', basefmt='b--', bottom=0)if show or save:  # 需要展示/保存# %% 绘制待发射信号的二进制比特序列&脉冲序列figure_i = 0figure_title = ("Figure-%02d-" % figure_i) + r"待发射信号的二进制比特序列与脉冲序列"utils.drawSequence(figure_i=figure_i,row_i=3,column_j=1,figure_title=figure_title,font=font,axis_xs=[n, t, t],axis_ys=[b, delta[0], delta[1]],axes_titles=[r"二进制比特序列", r"单极性脉冲序列", r"双极性脉冲序列"],label_xs=[r"n", r"t / s", r"t / s"],linefmts=['gray'] * 3,markerfmts=['ko', 'ro', 'bo'],basefmts=['k:'] * 3,bottoms=[0] * 3,labels=[r"b", r"m_NRZ", r"m_RZ"],label_locs=[r"upper right"] * 3,limit_ys=[tick[0], tick[0], tick[1]],maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 绘制信道中的信号 & 通过接收滤波器的信号figure_i = 1for i in range(len(variable_name[1][0])):for j in range(len(variable_name[1][1])):for k in range(len(variable_name[1][2])):for m in range(len(variable_name[1][3])):variable_name_str = \variable_name[1][0][i] + '_' \+ variable_name[1][1][j] + '_' \+ variable_name[1][2][k] \+ variable_name[1][3][m]variable_0_name_str = variable_name[0][0] + variable_name_strvariable_1_name_str = variable_name[0][1] + variable_name_strfigure_title = ("Figure-%02d-" % figure_i) \+ title_name[0][0] + r"与" + title_name[0][1] + r'-' \+ title_name[1][0][i] \+ title_name[1][1][j] \+ title_name[1][2][k] \+ title_name[1][3][m]utils.drawWave(figure_i=figure_i,row_i=2,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 2,axis_ys=[eval(variable_0_name_str), eval(variable_1_name_str)],axes_titles=[title_name[0][0], title_name[0][1]],label_xs=[r"t / s"] * 2,label_ys=[None] * 2,formats=['b-,', 'g-,'],labels=[r"r(t)", r"y(t)"],label_locs=[r"upper right"] * 2,limit_ys=[None] * 2,linewidths=[1] * 2,scale_xs=['linear'] * 2,scale_ys=['linear'] * 2,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)figure_i += 1# %% 抽样保持后的的序列 & 判决后的序列figure_i = 25for i in range(len(variable_name[1][0])):for j in range(len(variable_name[1][1])):for k in range(len(variable_name[1][2])):for m in range(len(variable_name[1][3])):variable_name_str = \variable_name[1][0][i] + '_' \+ variable_name[1][1][j] + '_' \+ variable_name[1][2][k] \+ variable_name[1][3][m]variable_2_name_str = variable_name[0][2] + variable_name_strvariable_3_name_str = variable_name[0][3] + variable_name_strfigure_title = ("Figure-%02d-" % figure_i) \+ title_name[0][2] + r"与" + title_name[0][3] + r'-' \+ title_name[1][0][i] \+ title_name[1][1][j] \+ title_name[1][2][k] \+ title_name[1][3][m]utils.drawSequence(figure_i=figure_i,row_i=3,column_j=1,figure_title=figure_title,font=font,axis_xs=[n] * 3,axis_ys=[b, eval(variable_2_name_str), eval(variable_3_name_str)],axes_titles=[r"传输的二进制比特序列", title_name[0][2], title_name[0][3]],label_xs=[r"n"] * 3,linefmts=['gray'] * 3,markerfmts=['ko', 'ro', 'bo'],basefmts=['k:'] * 3,bottoms=[0, (tick[j][0] + tick[j][1]) / 2, 0],labels=[r"b", r"y", r"b^"],label_locs=[r"upper right"] * 3,limit_ys=[tick[0], tick[j], tick[0]],maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)figure_i += 1# %% 求仿真误码率error_rate = {"name": []}for i in range(len(variable_name[1][0])):for j in range(len(variable_name[1][1])):for k in range(len(variable_name[1][2])):for m in range(len(variable_name[1][3])):variable_name_str = \variable_name[1][0][i] + '_' \+ variable_name[1][1][j] + '_' \+ variable_name[1][2][k] \+ variable_name[1][3][m]b_hat_str = variable_name[0][3] + variable_name_strfigure_title = title_name[1][0][i] \+ title_name[1][1][j] \+ title_name[1][2][k] \+ title_name[1][3][m]b_hat = eval(b_hat_str)count = 0for index in range(len(b)):count += 1 if b[index] != b_hat[index] else 0error_rate[figure_title] = (snr, count, len(b), count / len(b))error_rate["name"].append(figure_title)return error_rate

8.5 数字频带系统仿真模块 frequencyBand.py

变量名称 变量值
b 发送的二进制比特序列
b_I 发射机同相支路传输的二进制比特序列
b_Q 发射机正交支路传输的二进制比特序列
s_I 发射机同相支路传输的符号序列
s_Q 发射机正交支路传输的符号序列
delta_I 发射机同相支路窄脉冲波形
delta_Q 发射机正交支路窄脉冲波形
m_I_rcos 发射机同相支路基带波形
m_Q_rcos 发射机正交支路基带波形
carrier_I 发射机同相支路载波波形
carrier_Q 发射机正交支路载波波形
s_I_rcos_mod 发射机同相支路频带波形
s_Q_rcos_mod 发射机正交支路频带波形
s_rcos_mod 无噪信道传输波形
r_rcos_mod AWGN信道传输波形
s_rcos_limited_mod 无噪带限信道传输波形
r_rcos_limited_mod AWGN带限信道传输波形
s_I_rcos_limited 接收机同相支路无噪信号解调波形
s_Q_rcos_limited 接收机正交支路无噪信号解调波形
r_I_rcos_limited 接收机同相支路加噪信号解调波形
r_Q_rcos_limited 接收机正交支路加噪信号解调波形
y_t_s_I_rcos 接收机同相支路无噪信号接收波形
y_t_s_Q_rcos 接收机正交支路无噪信号接收波形
y_t_r_I_rcos 接收机同相支路加噪信号接收波形
y_t_r_Q_rcos 接收机正交支路加噪信号接收波形
y_t_s_I_rcos_nor 接收机同相支路无噪信号归一化接收波形
y_t_s_Q_rcos_nor 接收机正交支路无噪信号归一化接收波形
y_t_r_I_rcos_nor 接收机同相支路加噪信号归一化接收波形
y_t_r_Q_rcos_nor 接收机正交支路加噪信号归一化接收波形
y_s_I_rcos 接收机同相支路无噪信号抽样序列
y_s_Q_rcos 接收机正交支路无噪信号抽样序列
y_r_I_rcos 接收机同相支路加噪信号抽样序列
y_r_Q_rcos 接收机正交支路加噪信号抽样序列
b_hat_s_I 接收机同相支路无噪信号判决结果
b_hat_s_Q 接收机正交支路无噪信号判决结果
b_hat_r_I 接收机同相支路加噪信号判决结果
b_hat_r_Q 接收机正交支路加噪信号判决结果
b_hat_s 无噪信道接收的二进制比特序列
b_hat_r 加噪信道接收的二进制比特序列
# -*- coding: utf-8 -*-
# frequencyBand.py# -*- coding: utf-8 -*-
# baseBand.py# %% 配置导入
from scipy import signal
from commpy import filtersimport random
import math
import numpy as npimport utils# 调试用
# from scipy import fft
# import matplotlib.pyplot as plt
from matplotlib import font_manager# # %% 参数设置
font_default = font_manager.FontProperties(fname=r"font/YaHei Consolas Hybrid.ttf")  # 用于显示中文的字体文件(严格等宽)
save_path = "assignment/communication-principles/simulation-4/images/%s.png"  # 图窗保存为图片的路径font = font_default
time_begin = 0  # 起始时间
time_end = 1  # 终止时间
f_sample = 2048 << 1  # 采样频率
frequency = [32 << 1, 128 << 1]  # [信号频率, 载波频率]
snr = -10  # AWGN生成时的信噪比, 单位(dB)
seed = 3  # AWGN发生器随机种子
show = True  # 是否显示图形
save = True  # 是否保存图形def QPSK_simulation(font=font_default,time_begin=0,time_end=1,f_sample=4096,frequency=[64, 256],snr=-10,seed=3,show=False,save=False
):"""@param:font: 图标字体time_begin: 起始时间time_end: 终止时间f_sample: 采样频率frequency: [比特传输速率, 载波频率]snr: AWGN生成时的信噪比, 单位(dB)seed: AWGN发生器随机种子show: 是否显示图形save: 是否保存图形@reutrn:error_rate: (全频带信噪比(dB), 通带信噪比(dB), 信号功率, 全频带噪声功率, 噪声双边功率谱密度, 通带噪声功率, 误比特数, 传输比特数, 误比特率)"""r_b = frequency[0]  # 比特速率r_s = r_b >> 1  # 符号速率time_length = time_end - time_begin  # 时长points = f_sample * time_length  # 栅网采样点数t = np.linspace(time_begin, time_end, points, endpoint=False)  # 生成时域栅网# samples_per_period_b = f_sample // r_b  # 每比特采样点数samples_per_period_s = f_sample // r_s  # 每符号采样点数period_num_b = time_length * r_b  # 共采样多少周期(比特)# period_num_s = time_length * r_s  # 共采样多少周期(符号)amplitude = math.sqrt(2)   # 振幅map_b_I_Q = [1, -1]  # 由b到I(t)与Q(t)的映射0=>1, 1=>-1map_I_Q_b = [0, 0, 1]  # 由I(t)与Q(t)到b的映射1=>0, -1=>1# zoom = 4  # 频谱缩放倍数# display_interval = 1.25  # 显示区间的系数tick = [(-0.5, 1.5), (-2, 2)]  # 波形绘制纵轴刻度下限与上限filter_order = 8  # 滤波器的阶数# f_H_LPF = frequency * 2  # 低通滤波器的上限截止频率f_H_BPF = frequency[1] + (r_s << 0)  # 带通滤波器的上限截止频率f_L_BPF = frequency[1] - (r_s << 0)  # 带通滤波器的下限截止频率# %% 生成比特序列b = [1] * (int(period_num_b) >> 1) + [0] * (int(period_num_b) >> 1)  # 生成01等概的二进制序列n = np.array(range(len(b)))  # 生成二进制序列序号random.shuffle(b)  # 将二进制序列打乱, 生成01等概的二进制随机序列# %% 串并变换b_I = b[1:len(b):2]  # 同相支路二进制序列b_Q = b[0:len(b):2]  # 正交支路二进制序列# %% 生成同相支路与正交支路地时域波形delta_I = []  # 生成同相支路窄脉冲序列delta_Q = []  # 生成正交支路窄脉冲序列for i in b_I:delta_I.append(map_b_I_Q[i])delta_I += [0] * int(samples_per_period_s - 1)for i in b_Q:delta_Q.append(map_b_I_Q[i])delta_Q += [0] * int(samples_per_period_s - 1)# %% 升余弦滤波器与根升余弦滤波器冲激响应序列生成# g_rcosfilter = filters.rcosfilter(points, 0.5, 1/frequency, f_sample)[1]  # 升余弦滤波器冲激响应g_rrcosfilter = filters.rrcosfilter(points+1, 0.5, 1/r_s, f_sample)[1]  # 根升余弦滤波器冲激响应g_rrcosfilter_nor_factor = 1 / samples_per_period_s  # 归一化系数# plt.plot(g_rrcosfilter)# plt.plot(np.abs(fft.fft(g_rrcosfilter[0:100])))# plt.plot(g_rcosfilter)# plt.plot(np.abs(fft.fft(g_rcosfilter[0:100]))# %% 待调制序列生成m_I_rcos_calculate = signal.convolve(delta_I, g_rrcosfilter)  # 计算用同相支路升余弦基带信号(未截断滤波器延迟)m_Q_rcos_calculate = signal.convolve(delta_Q, g_rrcosfilter)  # 计算用正交支路升余弦基带信号(未截断滤波器延迟)m_I_rcos = m_I_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用双极性升余弦基带信号m_Q_rcos = m_Q_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用双极性升余弦基带信号# 调试-时域波形# plt.plot(delta_I)# plt.plot(delta_Q)# plt.plot(m_I_rcos_calculate)# plt.plot(m_Q_rcos_calculate)# plt.plot(m_I_rcos)# plt.plot(m_Q_rcos)# 调试-频域波形# %% 载波信号生成carrier_I = signal.chirp(t,f0=frequency[1],t1=time_end,f1=frequency[1],phi=0,method='linear')carrier_Q = signal.chirp(t,f0=frequency[1],t1=time_end,f1=frequency[1],phi=90,method='linear')# 调试-时域波形# plt.plot(carrier_I)# plt.plot(carrier_Q)# 调试-频域波形# plt.plot(np.abs(fft.fft(carrier_I)[0:200]))# plt.plot(np.abs(fft.fft(carrier_Q)[0:200]))# %% 调制# 不加噪的发送序列s_I_rcos_calculate_mod = m_I_rcos_calculate * np.hstack((carrier_I, carrier_I)) * amplitudes_Q_rcos_calculate_mod = m_Q_rcos_calculate * np.hstack((carrier_Q, carrier_Q)) * amplitudes_rcos_calculate_mod = s_I_rcos_calculate_mod + s_Q_rcos_calculate_mods_I_rcos_mod = s_I_rcos_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用s_Q_rcos_mod = s_Q_rcos_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用s_rcos_mod = s_rcos_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用# 调试-时域波形# plt.plot(s_I_rcos_calculate_mod)# plt.plot(s_Q_rcos_calculate_mod)# plt.plot(s_rcos_calculate_mod)# plt.plot(s_I_rcos_mod)# plt.plot(s_Q_rcos_mod)# plt.plot(s_rcos_mod)# 调试-频域波形# plt.plot(np.abs(fft.fft(s_I_rcos_mod)[0:200]))# plt.plot(np.abs(fft.fft(s_Q_rcos_mod)[0:200]))# plt.plot(np.abs(fft.fft(s_rcos_mod)[0:200]))# %% 为发送序列加入AWGN噪声noise, s_power, n_power = utils.wgn(s_rcos_calculate_mod, snr, seed)noise *= np.sqrt(2)  # 由于没有截断滤波器延时, 因此噪声幅值*\sqrt{2}s_power *= 2  # 由于没有截断滤波器延时, 因此实际信号功率为原来的两倍n_power *= 2  # 由于没有截断滤波器延时, 因此信噪比不变时噪声功率也应为原来的两倍r_rcos_calculate_mod = s_rcos_calculate_mod + noiser_rcos_mod = r_rcos_calculate_mod[(points >> 1):(points >> 1) + points]  # 展示用加噪的发送序列# 调试-时域波形# plt.plot(r_rcos_calculate_mod)# plt.plot(r_rcos_mod)# 调试-频域波形# plt.plot(np.abs(fft.fft(r_rcos_mod)[0:200]))# %% 滤波器参数"""滤波器构造函数(仅介绍Butterworth滤波器)scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba')输入参数:N:滤波器的阶数Wn:归一化截止频率。计算公式Wn=2*截止频率/采样频率。(注意:根据采样定理,采样频率要大于两倍的信号本身最大的频率,才能还原信号。截止频率一定小于信号本身最大的频率,所以Wn一定在0和1之间)。当构造带通滤波器或者带阻滤波器时,Wn为长度为2的列表。btype : 滤波器类型{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’},output : 输出类型{‘ba’, ‘zpk’, ‘sos’},输出参数:b,a: IIR滤波器的分子(b)和分母(a)多项式系数向量。output='ba'z,p,k: IIR滤波器传递函数的零点、极点和系统增益. output= 'zpk'sos: IIR滤波器的二阶截面表示。output= 'sos'函数的使用信号滤波中最常用的无非低通滤波、高通滤波和带通滤波。下面简单介绍这三种滤波的使用过程:(1).高通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以下频率成分,即截至频率为10hz,则wn=2*10/1000=0.02# from scipy import signal# b, a = signal.butter(8, 0.02, 'highpass')# filtedData = signal.filtfilt(b, a, data)#data为要过滤的信号(2).低通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以上频率成分,即截至频率为10hz,则wn=2*10/1000=0.02# from scipy import signal# b, a = signal.butter(8, 0.02, 'lowpass')# filtedData = signal.filtfilt(b, a, data)       #data为要过滤的信号(3).带通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以下和400hz以上频率成分,即截至频率为10hz和400hz,则# wn1=2*10/1000=0.02# wn2=2*400/1000=0.8# Wn=[0.02,0.8]# from scipy import signal# b, a = signal.butter(8, [0.02,0.8], 'bandpass')# filtedData = signal.filtfilt(b, a, data)   #data为要过滤的信号"""# 由于没有截断滤波器延时, 因此采样频率wn_L_BPF = 2 * f_L_BPF / f_samplewn_H_BPF = 2 * f_H_BPF / f_sampleb_BPF, a_BPF = signal.butter(filter_order, [wn_L_BPF, wn_H_BPF], 'bandpass')  # 配置滤波器# %% 进行滤波, 模拟带限信道"""滤波函数scipy.signal.filtfilt(b, a, x, axis=-1, padtype='odd', padlen=None, method='pad', irlen=None)输入参数:b: 滤波器的分子系数向量a: 滤波器的分母系数向量x: 要过滤的数据数组。(array型)axis: 指定要过滤的数据数组x的轴padtype: 必须是“奇数”、“偶数”、“常数”或“无”。这决定了用于过滤器应用的填充信号的扩展类型。{‘odd’, ‘even’, ‘constant’, None}padlen:在应用滤波器之前在轴两端延伸X的元素数目。此值必须小于要滤波元素个数 - 1。(int型或None)method:确定处理信号边缘的方法。当method为“pad”时,填充信号;填充类型padtype和padlen决定,irlen被忽略。当method为“gust”时,使用古斯塔夫森方法,而忽略padtype和padlen。{“pad” ,“gust”}irlen:当method为“gust”时,irlen指定滤波器的脉冲响应的长度。如果irlen是None,则脉冲响应的任何部分都被忽略。对于长信号,指定irlen可以显著改善滤波器的性能。(int型或None)输出参数:y: 滤波后的数据数组"""s_rcos_limited_calculate_mod = signal.filtfilt(b_BPF, a_BPF, s_rcos_calculate_mod)s_rcos_limited_mod = s_rcos_limited_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用r_rcos_limited_calculate_mod = signal.filtfilt(b_BPF, a_BPF, r_rcos_calculate_mod)r_rcos_limited_mod = r_rcos_limited_calculate_mod[(points >> 1):(points >> 1) + points]  # 展示用# 调试-时域波形# plt.plot(s_rcos_limited_calculate_mod)# plt.plot(r_rcos_limited_calculate_mod)# plt.plot(s_rcos_limited_mod)# plt.plot(r_rcos_limited_mod)# 调试-频域波形# plt.plot(np.abs(fft.fft(s_rcos_limited_mod)[0:200]))# plt.plot(np.abs(fft.fft(r_rcos_limited_mod)[0:200]))# %% 解调s_I_rcos_limited_calculate = s_rcos_limited_calculate_mod * np.hstack((carrier_I, carrier_I)) * amplitudes_Q_rcos_limited_calculate = s_rcos_limited_calculate_mod * np.hstack((carrier_Q, carrier_Q)) * amplituder_I_rcos_limited_calculate = r_rcos_limited_calculate_mod * np.hstack((carrier_I, carrier_I)) * amplituder_Q_rcos_limited_calculate = r_rcos_limited_calculate_mod * np.hstack((carrier_Q, carrier_Q)) * amplitudes_I_rcos_limited = s_I_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用s_Q_rcos_limited = s_Q_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用r_I_rcos_limited = r_I_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用r_Q_rcos_limited = r_Q_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用# 调试-时域波形# plt.plot(s_I_rcos_limited_calculate)# plt.plot(s_Q_rcos_limited_calculate)# plt.plot(r_I_rcos_limited_calculate)# plt.plot(r_Q_rcos_limited_calculate)# plt.plot(s_I_rcos_limited)# plt.plot(s_Q_rcos_limited)# plt.plot(r_I_rcos_limited)# plt.plot(r_Q_rcos_limited)# 调试-频域波形# plt.plot(np.abs(fft.fft(s_I_rcos_limited)[0:200]))# plt.plot(np.abs(fft.fft(s_Q_rcos_limited)[0:200]))# plt.plot(np.abs(fft.fft(r_I_rcos_limited)[0:200]))# plt.plot(np.abs(fft.fft(r_Q_rcos_limited)[0:200]))# %% 通过接收滤波器y_t_s_I_rcos = signal.convolve(s_I_rcos_limited_calculate, g_rrcosfilter)[points:points + points]y_t_s_Q_rcos = signal.convolve(s_Q_rcos_limited_calculate, g_rrcosfilter)[points:points + points]y_t_r_I_rcos = signal.convolve(r_I_rcos_limited_calculate, g_rrcosfilter)[points:points + points]y_t_r_Q_rcos = signal.convolve(r_Q_rcos_limited_calculate, g_rrcosfilter)[points:points + points]# 调试-时域波形# plt.plot(y_t_s_I_rcos)# plt.plot(y_t_s_Q_rcos)# plt.plot(y_t_r_I_rcos)# plt.plot(y_t_r_Q_rcos)# 调试-频域波形# plt.plot(np.abs(fft.fft(y_t_s_I_rcos)[0:200]))# plt.plot(np.abs(fft.fft(y_t_s_Q_rcos)[0:200]))# plt.plot(np.abs(fft.fft(y_t_r_I_rcos)[0:200]))# plt.plot(np.abs(fft.fft(y_t_r_Q_rcos)[0:200]))# %% 幅值归一化y_t_s_I_rcos_nor = y_t_s_I_rcos * g_rrcosfilter_nor_factory_t_s_Q_rcos_nor = y_t_s_Q_rcos * g_rrcosfilter_nor_factory_t_r_I_rcos_nor = y_t_r_I_rcos * g_rrcosfilter_nor_factory_t_r_Q_rcos_nor = y_t_r_Q_rcos * g_rrcosfilter_nor_factor# 调试-时域波形# plt.plot(y_t_s_I_rcos_nor)# plt.plot(y_t_s_Q_rcos_nor)# plt.plot(y_t_r_I_rcos_nor)# plt.plot(y_t_r_Q_rcos_nor)# 调试-频域波形# plt.plot(np.abs(fft.fft(y_t_s_I_rcos_nor)[0:100]))# plt.plot(np.abs(fft.fft(y_t_s_Q_rcos_nor)[0:100]))# plt.plot(np.abs(fft.fft(y_t_r_I_rcos_nor)[0:100]))# plt.plot(np.abs(fft.fft(y_t_r_Q_rcos_nor)[0:100]))# %% 抽样保持y_s_I_rcos = y_t_s_I_rcos_nor[0:len(y_t_s_I_rcos_nor):int(samples_per_period_s)]y_s_Q_rcos = y_t_s_Q_rcos_nor[0:len(y_t_s_Q_rcos_nor):int(samples_per_period_s)]y_r_I_rcos = y_t_r_I_rcos_nor[0:len(y_t_r_I_rcos_nor):int(samples_per_period_s)]y_r_Q_rcos = y_t_r_Q_rcos_nor[0:len(y_t_r_Q_rcos_nor):int(samples_per_period_s)]# 调试-时域波形# plt.stem(delta_I)# plt.stem(delta_Q)# plt.stem(y_s_I_rcos_nor)# plt.stem(y_s_Q_rcos_nor)# plt.stem(y_r_I_rcos_nor)# plt.stem(y_r_Q_rcos_nor)# %% 判决b_hat_s_I = np.array(list(map(lambda y: map_I_Q_b[1] if y >= 0 else map_I_Q_b[-1], y_s_I_rcos)))b_hat_s_Q = np.array(list(map(lambda y: map_I_Q_b[1] if y >= 0 else map_I_Q_b[-1], y_s_Q_rcos)))b_hat_r_I = np.array(list(map(lambda y: map_I_Q_b[1] if y >= 0 else map_I_Q_b[-1], y_r_I_rcos)))b_hat_r_Q = np.array(list(map(lambda y: map_I_Q_b[1] if y >= 0 else map_I_Q_b[-1], y_r_Q_rcos)))# 调试-时域波形# plt.stem(b_hat_s_I)# plt.stem(b_hat_s_Q)# plt.stem(b_hat_r_I)# plt.stem(b_hat_r_Q)# %% 并串变换b_hat_s = np.zeros(len(b))b_hat_r = np.zeros(len(b))for i, value in enumerate(b_hat_s_I):b_hat_s[(i << 1) + 1] = valuefor i, value in enumerate(b_hat_s_Q):b_hat_s[i << 1] = valuefor i, value in enumerate(b_hat_r_I):b_hat_r[(i << 1) + 1] = valuefor i, value in enumerate(b_hat_r_Q):b_hat_r[i << 1] = value# %% Debug# plt.stem(n, b_hat_s_unipolar_NRZ, linefmt='k-', markerfmt='ko', basefmt='b--', bottom=0)if show or save:  # 需要展示/保存# %% 绘制待发射信号的二进制比特序列&支路序列figure_i = 70figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-待传输信号的二进制比特序列"utils.drawSequence(figure_i=figure_i,row_i=3,column_j=1,figure_title=figure_title,font=font,axis_xs=[n, n[0:len(n) // 2], n[0:len(n) // 2]],axis_ys=[b, b_I, b_Q],axes_titles=[r"发送二进制比特序列", r"同向支路二进制比特序列", r"正交支路二进制比特序列"],label_xs=[r"n"] * 3,linefmts=['gray'] * 3,markerfmts=['ko', 'ro', 'bo'],basefmts=['k:'] * 3,bottoms=[0] * 3,labels=[r"b", r"b_I", r"b_Q"],label_locs=[r"upper right"] * 3,limit_ys=[tick[0]] * 3,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 绘制发射机内信号figure_i = 71figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-待传输信号的基带波形与频带波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[m_I_rcos, m_Q_rcos, s_I_rcos_mod, s_Q_rcos_mod],axes_titles=[r"发射机同相支路基带波形",r"发射机正交支路基带波形",r"发射机同相支路频带波形",r"发射机正交支路频带波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['r-,', 'b-,'] * 2,labels=[r"m_I(t)", r"m_Q(t)", r"s_I(t)", r"s_Q(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 信道传输波形figure_i = 72figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-信道传输波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[s_rcos_mod, r_rcos_mod, s_rcos_limited_mod, r_rcos_limited_mod],axes_titles=[r"无噪信道传输波形",r"AWGN信道传输波形",r"无噪带限信道传输波形",r"AWGN带限信道传输波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['m-,', 'g-,'] * 2,labels=[r"s(t)", r"r(t)", r"s(t)", r"r(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机解调波形figure_i = 73figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-接收机解调波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[s_I_rcos_limited, s_Q_rcos_limited, r_I_rcos_limited, r_Q_rcos_limited],axes_titles=[r"接收机同相支路无噪信号解调波形",r"接收机正交支路无噪信号解调波形",r"接收机同相支路加噪信号解调波形",r"接收机正交支路加噪信号解调波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['r-,', 'b-,'] * 2,labels=[r"s_I(t)", r"s_Q(t)", r"r_I(t)", r"r_Q(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机归一化接收波形figure_i = 74figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-接收机归一化接收波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[y_t_s_I_rcos_nor, y_t_s_Q_rcos_nor, y_t_r_I_rcos_nor, y_t_r_Q_rcos_nor],axes_titles=[r"接收机同相支路无噪信号归一化接收波形",r"接收机正交支路无噪信号归一化接收波形",r"接收机同相支路加噪信号归一化接收波形",r"接收机正交支路加噪信号归一化接收波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['r-,', 'b-,'] * 2,labels=[r"s_I(t)", r"s_Q(t)", r"r_I(t)", r"r_Q(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机抽样序列figure_i = 75figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-接收机抽样序列"utils.drawSequence(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[n[0:len(n) // 2]] * 4,axis_ys=[y_s_I_rcos, y_s_Q_rcos, y_r_I_rcos, y_r_Q_rcos],axes_titles=[r"接收机同相支路无噪信号抽样序列",r"接收机正交支路无噪信号抽样序列",r"接收机同相支路加噪信号抽样序列",r"接收机正交支路加噪信号抽样序列"],label_xs=[r"n"] * 4,linefmts=['gray'] * 4,markerfmts=['ro', 'bo'] * 2,basefmts=['k:'] * 4,bottoms=[0] * 4,labels=[r"y_s_I", r"y_s_Q", r"y_r_I", r"y_r_Q"],label_locs=[r"upper right"] * 4,limit_ys=[tick[1]] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机接收的二进制比特序列figure_i = 76figure_title = ("Figure-%02d-" % figure_i) + r"QPSK-接收的二进制序列"utils.drawSequence(figure_i=figure_i,row_i=3,column_j=1,figure_title=figure_title,font=font,axis_xs=[n] * 3,axis_ys=[b, b_hat_s, b_hat_r],axes_titles=[r"发送的二进制比特序列",r"无噪信道接收的二进制比特序列",r"加噪信道接收的二进制比特序列"],label_xs=[r"n"] * 3,linefmts=['gray'] * 3,markerfmts=['ko', 'ro', 'bo'],basefmts=['k:'] * 3,bottoms=[0] * 3,labels=[r"b", r"b_hat_s", r"b_hat_r"],label_locs=[r"upper right"] * 3,limit_ys=[tick[0]] * 3,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 求仿真误码率counter_error_bit = 0for i in range(len(b)):if b[i] != b_hat_r[i]:counter_error_bit += 1# utils.show()N_0_2 = n_power / f_samplen_power_limit = N_0_2 * 2 * (f_H_BPF - f_L_BPF)print([snr, 10 * math.log10(s_power / n_power_limit), s_power, n_power, N_0_2, n_power_limit, counter_error_bit, len(b), counter_error_bit / len(b)])return (snr, 10 * math.log10(s_power / n_power_limit), s_power, n_power, N_0_2, n_power_limit, counter_error_bit, len(b), counter_error_bit / len(b))def MQAM_simulation(font=font_default,time_begin=0,time_end=1,f_sample=4096,frequency=[64, 256],snr=-10,seed=3,show=False,save=False
):"""@param:font: 图标字体time_begin: 起始时间time_end: 终止时间f_sample: 采样频率frequency: [比特传输速率, 载波频率]snr: AWGN生成时的信噪比, 单位(dB)seed: AWGN发生器随机种子show: 是否显示图形save: 是否保存图形@reutrn:error_rate: (全频带信噪比(dB), 通带信噪比(dB), 信号功率, 全频带噪声功率, 噪声双边功率谱密度, 通带噪声功率, 误比特数, 传输比特数, 误比特率)"""r_b = frequency[0]  # 比特速率r_s = r_b >> 2  # 符号速率time_length = time_end - time_begin  # 时长points = f_sample * time_length  # 栅网采样点数t = np.linspace(time_begin, time_end, points, endpoint=False)  # 生成时域栅网# samples_per_period_b = f_sample // r_b  # 每比特采样点数samples_per_period_s = f_sample // r_s  # 每符号采样点数period_num_b = time_length * r_b  # 共采样多少周期(比特)# period_num_s = time_length * r_s  # 共采样多少周期(符号)amplitude = math.sqrt(2)   # 振幅# zoom = 4  # 频谱缩放倍数# display_interval = 1.25  # 显示区间的系数tick = [(-0.5, 1.5), (-4, 4)]  # 波形绘制纵轴刻度下限与上限filter_order = 8  # 滤波器的阶数# f_H_LPF = frequency * 2  # 低通滤波器的上限截止频率f_H_BPF = frequency[1] + (r_s << 0)  # 带通滤波器的上限截止频率f_L_BPF = frequency[1] - (r_s << 0)  # 带通滤波器的下限截止频率# %% 生成比特序列b = [1] * (int(period_num_b) >> 1) + [0] * (int(period_num_b) >> 1)  # 生成01等概的二进制序列n = np.array(range(len(b)))  # 生成二进制序列序号random.shuffle(b)  # 将二进制序列打乱, 生成01等概的二进制随机序列# %% 生成符号序列(2个比特为一个支路符号, 串并变换)s_I = []  # 同相支路符号序列s_Q = []  # 正交支路符号序列for i in range(0, len(b), 4):if b[i + 0] == 0 and b[i + 1] == 0:s_I.append(-3)elif b[i + 0] == 0 and b[i + 1] == 1:s_I.append(-1)elif b[i + 0] == 1 and b[i + 1] == 1:s_I.append(1)elif b[i + 0] == 1 and b[i + 1] == 0:s_I.append(3)if b[i + 2] == 0 and b[i + 3] == 0:s_Q.append(-3)elif b[i + 2] == 0 and b[i + 3] == 1:s_Q.append(-1)elif b[i + 2] == 1 and b[i + 3] == 1:s_Q.append(1)elif b[i + 2] == 1 and b[i + 3] == 0:s_Q.append(3)# %% 生成同相支路与正交支路地时域波形delta_I = []  # 生成同相支路窄脉冲序列delta_Q = []  # 生成正交支路窄脉冲序列for s in s_I:delta_I.append(s)delta_I += [0] * int(samples_per_period_s - 1)for s in s_Q:delta_Q.append(s)delta_Q += [0] * int(samples_per_period_s - 1)# %% 升余弦滤波器与根升余弦滤波器冲激响应序列生成# g_rcosfilter = filters.rcosfilter(points, 0.5, 1/frequency, f_sample)[1]  # 升余弦滤波器冲激响应g_rrcosfilter = filters.rrcosfilter(points+1, 0.5, 1/r_s, f_sample)[1]  # 根升余弦滤波器冲激响应g_rrcosfilter_nor_factor = 1 / samples_per_period_s  # 归一化系数# plt.plot(g_rrcosfilter)# plt.plot(np.abs(fft.fft(g_rrcosfilter[0:100])))# plt.plot(g_rcosfilter)# plt.plot(np.abs(fft.fft(g_rcosfilter[0:100]))# %% 待调制序列生成m_I_rcos_calculate = signal.convolve(delta_I, g_rrcosfilter)  # 计算用同相支路升余弦基带信号(未截断滤波器延迟)m_Q_rcos_calculate = signal.convolve(delta_Q, g_rrcosfilter)  # 计算用正交支路升余弦基带信号(未截断滤波器延迟)m_I_rcos = m_I_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用双极性升余弦基带信号m_Q_rcos = m_Q_rcos_calculate[(points >> 1):(points >> 1)+points]  # 展示用双极性升余弦基带信号# 调试-时域波形# plt.plot(delta_I)# plt.plot(delta_Q)# plt.plot(m_I_rcos_calculate)# plt.plot(m_Q_rcos_calculate)# plt.plot(m_I_rcos)# plt.plot(m_Q_rcos)# 调试-频域波形# %% 载波信号生成carrier_I = signal.chirp(t,f0=frequency[1],t1=time_end,f1=frequency[1],phi=0,method='linear')carrier_Q = signal.chirp(t,f0=frequency[1],t1=time_end,f1=frequency[1],phi=90,method='linear')# 调试-时域波形# plt.plot(carrier_I)# plt.plot(carrier_Q)# 调试-频域波形# plt.plot(np.abs(fft.fft(carrier_I)[0:200]))# plt.plot(np.abs(fft.fft(carrier_Q)[0:200]))# %% 调制# 不加噪的发送序列s_I_rcos_calculate_mod = m_I_rcos_calculate * np.hstack((carrier_I, carrier_I)) * amplitudes_Q_rcos_calculate_mod = m_Q_rcos_calculate * np.hstack((carrier_Q, carrier_Q)) * amplitudes_rcos_calculate_mod = s_I_rcos_calculate_mod + s_Q_rcos_calculate_mods_I_rcos_mod = s_I_rcos_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用s_Q_rcos_mod = s_Q_rcos_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用s_rcos_mod = s_rcos_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用# 调试-时域波形# plt.plot(s_I_rcos_calculate_mod)# plt.plot(s_Q_rcos_calculate_mod)# plt.plot(s_rcos_calculate_mod)# plt.plot(s_I_rcos_mod)# plt.plot(s_Q_rcos_mod)# plt.plot(s_rcos_mod)# 调试-频域波形# plt.plot(np.abs(fft.fft(s_I_rcos_mod)[0:200]))# plt.plot(np.abs(fft.fft(s_Q_rcos_mod)[0:200]))# plt.plot(np.abs(fft.fft(s_rcos_mod)[0:200]))# %% 为发送序列加入AWGN噪声noise, s_power, n_power = utils.wgn(s_rcos_calculate_mod, snr, seed)noise *= np.sqrt(2)  # 由于没有截断滤波器延时, 因此噪声幅值*\sqrt{2}s_power *= 2  # 由于没有截断滤波器延时, 因此实际信号功率为原来的两倍n_power *= 2  # 由于没有截断滤波器延时, 因此信噪比不变时噪声功率也应为原来的两倍r_rcos_calculate_mod = s_rcos_calculate_mod + noiser_rcos_mod = r_rcos_calculate_mod[(points >> 1):(points >> 1) + points]  # 展示用加噪的发送序列# 调试-时域波形# plt.plot(r_rcos_calculate_mod)# plt.plot(r_rcos_mod)# 调试-频域波形# plt.plot(np.abs(fft.fft(r_rcos_mod)[0:200]))# %% 滤波器参数"""滤波器构造函数(仅介绍Butterworth滤波器)scipy.signal.butter(N, Wn, btype='low', analog=False, output='ba')输入参数:N:滤波器的阶数Wn:归一化截止频率。计算公式Wn=2*截止频率/采样频率。(注意:根据采样定理,采样频率要大于两倍的信号本身最大的频率,才能还原信号。截止频率一定小于信号本身最大的频率,所以Wn一定在0和1之间)。当构造带通滤波器或者带阻滤波器时,Wn为长度为2的列表。btype : 滤波器类型{‘lowpass’, ‘highpass’, ‘bandpass’, ‘bandstop’},output : 输出类型{‘ba’, ‘zpk’, ‘sos’},输出参数:b,a: IIR滤波器的分子(b)和分母(a)多项式系数向量。output='ba'z,p,k: IIR滤波器传递函数的零点、极点和系统增益. output= 'zpk'sos: IIR滤波器的二阶截面表示。output= 'sos'函数的使用信号滤波中最常用的无非低通滤波、高通滤波和带通滤波。下面简单介绍这三种滤波的使用过程:(1).高通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以下频率成分,即截至频率为10hz,则wn=2*10/1000=0.02# from scipy import signal# b, a = signal.butter(8, 0.02, 'highpass')# filtedData = signal.filtfilt(b, a, data)#data为要过滤的信号(2).低通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以上频率成分,即截至频率为10hz,则wn=2*10/1000=0.02# from scipy import signal# b, a = signal.butter(8, 0.02, 'lowpass')# filtedData = signal.filtfilt(b, a, data)       #data为要过滤的信号(3).带通滤波# 这里假设采样频率为1000hz,信号本身最大的频率为500hz,要滤除10hz以下和400hz以上频率成分,即截至频率为10hz和400hz,则# wn1=2*10/1000=0.02# wn2=2*400/1000=0.8# Wn=[0.02,0.8]# from scipy import signal# b, a = signal.butter(8, [0.02,0.8], 'bandpass')# filtedData = signal.filtfilt(b, a, data)   #data为要过滤的信号"""# 由于没有截断滤波器延时, 因此采样频率wn_L_BPF = 2 * f_L_BPF / f_samplewn_H_BPF = 2 * f_H_BPF / f_sampleb_BPF, a_BPF = signal.butter(filter_order, [wn_L_BPF, wn_H_BPF], 'bandpass')  # 配置滤波器# %% 进行滤波, 模拟带限信道"""滤波函数scipy.signal.filtfilt(b, a, x, axis=-1, padtype='odd', padlen=None, method='pad', irlen=None)输入参数:b: 滤波器的分子系数向量a: 滤波器的分母系数向量x: 要过滤的数据数组。(array型)axis: 指定要过滤的数据数组x的轴padtype: 必须是“奇数”、“偶数”、“常数”或“无”。这决定了用于过滤器应用的填充信号的扩展类型。{‘odd’, ‘even’, ‘constant’, None}padlen:在应用滤波器之前在轴两端延伸X的元素数目。此值必须小于要滤波元素个数 - 1。(int型或None)method:确定处理信号边缘的方法。当method为“pad”时,填充信号;填充类型padtype和padlen决定,irlen被忽略。当method为“gust”时,使用古斯塔夫森方法,而忽略padtype和padlen。{“pad” ,“gust”}irlen:当method为“gust”时,irlen指定滤波器的脉冲响应的长度。如果irlen是None,则脉冲响应的任何部分都被忽略。对于长信号,指定irlen可以显著改善滤波器的性能。(int型或None)输出参数:y: 滤波后的数据数组"""s_rcos_limited_calculate_mod = signal.filtfilt(b_BPF, a_BPF, s_rcos_calculate_mod)s_rcos_limited_mod = s_rcos_limited_calculate_mod[(points >> 1):(points >> 1)+points]  # 展示用r_rcos_limited_calculate_mod = signal.filtfilt(b_BPF, a_BPF, r_rcos_calculate_mod)r_rcos_limited_mod = r_rcos_limited_calculate_mod[(points >> 1):(points >> 1) + points]  # 展示用# 调试-时域波形# plt.plot(s_rcos_limited_calculate_mod)# plt.plot(r_rcos_limited_calculate_mod)# plt.plot(s_rcos_limited_mod)# plt.plot(r_rcos_limited_mod)# 调试-频域波形# plt.plot(np.abs(fft.fft(s_rcos_limited_mod)[0:200]))# plt.plot(np.abs(fft.fft(r_rcos_limited_mod)[0:200]))# %% 解调s_I_rcos_limited_calculate = s_rcos_limited_calculate_mod * np.hstack((carrier_I, carrier_I)) * amplitudes_Q_rcos_limited_calculate = s_rcos_limited_calculate_mod * np.hstack((carrier_Q, carrier_Q)) * amplituder_I_rcos_limited_calculate = r_rcos_limited_calculate_mod * np.hstack((carrier_I, carrier_I)) * amplituder_Q_rcos_limited_calculate = r_rcos_limited_calculate_mod * np.hstack((carrier_Q, carrier_Q)) * amplitudes_I_rcos_limited = s_I_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用s_Q_rcos_limited = s_Q_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用r_I_rcos_limited = r_I_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用r_Q_rcos_limited = r_Q_rcos_limited_calculate[(points >> 1):(points >> 1)+points]  # 展示用# 调试-时域波形# plt.plot(s_I_rcos_limited_calculate)# plt.plot(s_Q_rcos_limited_calculate)# plt.plot(r_I_rcos_limited_calculate)# plt.plot(r_Q_rcos_limited_calculate)# plt.plot(s_I_rcos_limited)# plt.plot(s_Q_rcos_limited)# plt.plot(r_I_rcos_limited)# plt.plot(r_Q_rcos_limited)# 调试-频域波形# plt.plot(np.abs(fft.fft(s_I_rcos_limited)[0:200]))# plt.plot(np.abs(fft.fft(s_Q_rcos_limited)[0:200]))# plt.plot(np.abs(fft.fft(r_I_rcos_limited)[0:200]))# plt.plot(np.abs(fft.fft(r_Q_rcos_limited)[0:200]))# %% 通过接收滤波器y_t_s_I_rcos = signal.convolve(s_I_rcos_limited_calculate, g_rrcosfilter)[points:points + points]y_t_s_Q_rcos = signal.convolve(s_Q_rcos_limited_calculate, g_rrcosfilter)[points:points + points]y_t_r_I_rcos = signal.convolve(r_I_rcos_limited_calculate, g_rrcosfilter)[points:points + points]y_t_r_Q_rcos = signal.convolve(r_Q_rcos_limited_calculate, g_rrcosfilter)[points:points + points]# 调试-时域波形# plt.plot(y_t_s_I_rcos)# plt.plot(y_t_s_Q_rcos)# plt.plot(y_t_r_I_rcos)# plt.plot(y_t_r_Q_rcos)# 调试-频域波形# plt.plot(np.abs(fft.fft(y_t_s_I_rcos)[0:200]))# plt.plot(np.abs(fft.fft(y_t_s_Q_rcos)[0:200]))# plt.plot(np.abs(fft.fft(y_t_r_I_rcos)[0:200]))# plt.plot(np.abs(fft.fft(y_t_r_Q_rcos)[0:200]))# %% 幅值归一化y_t_s_I_rcos_nor = y_t_s_I_rcos * g_rrcosfilter_nor_factory_t_s_Q_rcos_nor = y_t_s_Q_rcos * g_rrcosfilter_nor_factory_t_r_I_rcos_nor = y_t_r_I_rcos * g_rrcosfilter_nor_factory_t_r_Q_rcos_nor = y_t_r_Q_rcos * g_rrcosfilter_nor_factor# 调试-时域波形# plt.plot(y_t_s_I_rcos_nor)# plt.plot(y_t_s_Q_rcos_nor)# plt.plot(y_t_r_I_rcos_nor)# plt.plot(y_t_r_Q_rcos_nor)# 调试-频域波形# plt.plot(np.abs(fft.fft(y_t_s_I_rcos_nor)[0:100]))# plt.plot(np.abs(fft.fft(y_t_s_Q_rcos_nor)[0:100]))# plt.plot(np.abs(fft.fft(y_t_r_I_rcos_nor)[0:100]))# plt.plot(np.abs(fft.fft(y_t_r_Q_rcos_nor)[0:100]))# %% 抽样保持y_s_I_rcos = y_t_s_I_rcos_nor[0:len(y_t_s_I_rcos_nor):int(samples_per_period_s)]y_s_Q_rcos = y_t_s_Q_rcos_nor[0:len(y_t_s_Q_rcos_nor):int(samples_per_period_s)]y_r_I_rcos = y_t_r_I_rcos_nor[0:len(y_t_r_I_rcos_nor):int(samples_per_period_s)]y_r_Q_rcos = y_t_r_Q_rcos_nor[0:len(y_t_r_Q_rcos_nor):int(samples_per_period_s)]# 调试-时域波形# plt.stem(delta_I)# plt.stem(delta_Q)# plt.stem(y_s_I_rcos_nor)# plt.stem(y_s_Q_rcos_nor)# plt.stem(y_r_I_rcos_nor)# plt.stem(y_r_Q_rcos_nor)# %% 判决与串并变换def judge(s_I, s_Q):b = []for i in range(len(s_I)):if s_I[i] <= -2:b.append(0)b.append(0)elif s_I[i] <= 0:b.append(0)b.append(1)elif s_I[i] <= 2:b.append(1)b.append(1)else:b.append(1)b.append(0)if s_Q[i] <= -2:b.append(0)b.append(0)elif s_Q[i] <= 0:b.append(0)b.append(1)elif s_Q[i] <= 2:b.append(1)b.append(1)else:b.append(1)b.append(0)return np.array(b)b_hat_s = judge(y_s_I_rcos, y_s_Q_rcos)b_hat_r = judge(y_r_I_rcos, y_r_Q_rcos)# %% Debug# plt.stem(n, b_hat_s_unipolar_NRZ, linefmt='k-', markerfmt='ko', basefmt='b--', bottom=0)if show or save:  # 需要展示/保存# %% 绘制待发射信号的二进制比特序列&支路序列figure_i = 80figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-待传输信号的比特与符号序列"utils.drawSequence(figure_i=figure_i,row_i=3,column_j=1,figure_title=figure_title,font=font,axis_xs=[n, n[0:len(n) >> 2], n[0:len(n) >> 2]],axis_ys=[b, s_I, s_Q],axes_titles=[r"发送二进制比特序列", r"同向支路符号序列", r"正交支路符号序列"],label_xs=[r"n"] * 3,linefmts=['gray'] * 3,markerfmts=['ko', 'ro', 'bo'],basefmts=['k:'] * 3,bottoms=[0] * 3,labels=[r"b", r"s_I", r"s_Q"],label_locs=[r"upper right"] * 3,limit_ys=[tick[0], tick[1], tick[1]],maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 绘制发射机内信号figure_i = 81figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-待传输信号的基带波形与频带波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[m_I_rcos, m_Q_rcos, s_I_rcos_mod, s_Q_rcos_mod],axes_titles=[r"发射机同相支路基带波形",r"发射机正交支路基带波形",r"发射机同相支路频带波形",r"发射机正交支路频带波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['r-,', 'b-,'] * 2,labels=[r"m_I(t)", r"m_Q(t)", r"s_I(t)", r"s_Q(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 信道传输波形figure_i = 82figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-信道传输波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[s_rcos_mod, r_rcos_mod, s_rcos_limited_mod, r_rcos_limited_mod],axes_titles=[r"无噪信道传输波形",r"AWGN信道传输波形",r"无噪带限信道传输波形",r"AWGN带限信道传输波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['m-,', 'g-,'] * 2,labels=[r"s(t)", r"r(t)", r"s(t)", r"r(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机解调波形figure_i = 83figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-接收机解调波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[s_I_rcos_limited, s_Q_rcos_limited, r_I_rcos_limited, r_Q_rcos_limited],axes_titles=[r"接收机同相支路无噪信号解调波形",r"接收机正交支路无噪信号解调波形",r"接收机同相支路加噪信号解调波形",r"接收机正交支路加噪信号解调波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['r-,', 'b-,'] * 2,labels=[r"s_I(t)", r"s_Q(t)", r"r_I(t)", r"r_Q(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机归一化接收波形figure_i = 84figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-接收机归一化接收波形"utils.drawWave(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[t] * 4,axis_ys=[y_t_s_I_rcos_nor, y_t_s_Q_rcos_nor, y_t_r_I_rcos_nor, y_t_r_Q_rcos_nor],axes_titles=[r"接收机同相支路无噪信号归一化接收波形",r"接收机正交支路无噪信号归一化接收波形",r"接收机同相支路加噪信号归一化接收波形",r"接收机正交支路加噪信号归一化接收波形"],label_xs=[r"t / s"] * 4,label_ys=[None] * 4,formats=['r-,', 'b-,'] * 2,labels=[r"s_I(t)", r"s_Q(t)", r"r_I(t)", r"r_Q(t)"],label_locs=[r"upper right"] * 4,limit_ys=[None] * 4,linewidths=[1] * 4,scale_xs=['linear'] * 4,scale_ys=['linear'] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机抽样序列figure_i = 85figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-接收机抽样序列"utils.drawSequence(figure_i=figure_i,row_i=4,column_j=1,figure_title=figure_title,font=font,axis_xs=[n[0:len(n) >> 2]] * 4,axis_ys=[y_s_I_rcos, y_s_Q_rcos, y_r_I_rcos, y_r_Q_rcos],axes_titles=[r"接收机同相支路无噪信号抽样序列",r"接收机正交支路无噪信号抽样序列",r"接收机同相支路加噪信号抽样序列",r"接收机正交支路加噪信号抽样序列"],label_xs=[r"n"] * 4,linefmts=['gray'] * 4,markerfmts=['ro', 'bo'] * 2,basefmts=['k:'] * 4,bottoms=[0] * 4,labels=[r"y_s_I", r"y_s_Q", r"y_r_I", r"y_r_Q"],label_locs=[r"upper right"] * 4,limit_ys=[tick[1]] * 4,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 接收机接收的二进制比特序列figure_i = 86figure_title = ("Figure-%02d-" % figure_i) + r"16QAM-接收的二进制序列"utils.drawSequence(figure_i=figure_i,row_i=3,column_j=1,figure_title=figure_title,font=font,axis_xs=[n] * 3,axis_ys=[b, b_hat_s, b_hat_r],axes_titles=[r"发送的二进制比特序列",r"无噪信道接收的二进制比特序列",r"加噪信道接收的二进制比特序列"],label_xs=[r"n"] * 3,linefmts=['gray'] * 3,markerfmts=['ko', 'ro', 'bo'],basefmts=['k:'] * 3,bottoms=[0] * 3,labels=[r"b", r"b_hat_s", r"b_hat_r"],label_locs=[r"upper right"] * 3,limit_ys=[tick[0]] * 3,maximize=True,save_path=(save_path % figure_title if save else None))if not show and save:utils.close(figure_i)# %% 求仿真误码率counter_error_bit = 0for i in range(len(b)):if b[i] != b_hat_r[i]:counter_error_bit += 1# utils.show()N_0_2 = n_power / f_samplen_power_limit = N_0_2 * 2 * (f_H_BPF - f_L_BPF)print([snr, 10 * math.log10(s_power / n_power_limit), s_power, n_power, N_0_2, n_power_limit, counter_error_bit, len(b), counter_error_bit / len(b)])return (snr, 10 * math.log10(s_power / n_power_limit), s_power, n_power, N_0_2, n_power_limit, counter_error_bit, len(b), counter_error_bit / len(b))

8.6 数字基带传输系统仿真结果数据

全频带信噪比(dB)与通频带信噪比(dB)的对应关系

全频带信噪比(dB) 通频带信噪比(dB)
-30 -22.22
-29 -21.22
-28 -20.22
-27 -19.22
-26 -18.22
-25 -17.22
-24 -16.22
-23 -15.22
-22 -14.22
-21 -13.22
-20 -12.22
-19 -11.22
-18 -10.22
-17 -9.22
-16 -8.22
-15 -7.22
-14 -6.22
-13 -5.22
-12 -4.22
-11 -3.22
-10 -2.22
-9 -1.22
-8 -0.22
-7 0.78
-6 1.78
-5 2.78
-4 3.78
-3 4.78
-2 5.78
-1 6.78
0 7.78
1 8.78
2 9.78
3 10.78
4 11.78
5 12.78
6 13.78
7 14.78
8 15.78
9 16.78
10 17.78

有噪单极性不归零带宽无限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1979 4096 4.831543e-01
-29 1892 4096 4.619141e-01
-28 1874 4096 4.575195e-01
-27 1861 4096 4.543457e-01
-26 1839 4096 4.489746e-01
-25 1815 4096 4.431152e-01
-24 1765 4096 4.309082e-01
-23 1744 4096 4.257812e-01
-22 1664 4096 4.062500e-01
-21 1673 4096 4.084473e-01
-20 1584 4096 3.867188e-01
-19 1570 4096 3.833008e-01
-18 1500 4096 3.662109e-01
-17 1458 4096 3.559570e-01
-16 1357 4096 3.312988e-01
-15 1311 4096 3.200684e-01
-14 1205 4096 2.941895e-01
-13 1136 4096 2.773438e-01
-12 1030 4096 2.514648e-01
-11 911 4096 2.224121e-01
-10 804 4096 1.962891e-01
-9 737 4096 1.799316e-01
-8 575 4096 1.403809e-01
-7 470 4096 1.147461e-01
-6 352 4096 8.593750e-02
-5 310 4096 7.568359e-02
-4 196 4096 4.785156e-02
-3 129 4096 3.149414e-02
-2 84 4096 2.050781e-02
-1 38 4096 9.277344e-03
0 19 4096 4.638672e-03
1 8 4096 1.953125e-03
2 3 4096 7.324219e-04
3 1 4096 2.441406e-04
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪单极性不归零带宽受限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1962 4096 4.790039e-01
-29 1886 4096 4.604492e-01
-28 1885 4096 4.602051e-01
-27 1844 4096 4.501953e-01
-26 1826 4096 4.458008e-01
-25 1788 4096 4.365234e-01
-24 1768 4096 4.316406e-01
-23 1718 4096 4.194336e-01
-22 1656 4096 4.042969e-01
-21 1633 4096 3.986816e-01
-20 1570 4096 3.833008e-01
-19 1554 4096 3.793945e-01
-18 1497 4096 3.654785e-01
-17 1437 4096 3.508301e-01
-16 1369 4096 3.342285e-01
-15 1291 4096 3.151855e-01
-14 1190 4096 2.905273e-01
-13 1116 4096 2.724609e-01
-12 1015 4096 2.478027e-01
-11 900 4096 2.197266e-01
-10 782 4096 1.909180e-01
-9 732 4096 1.787109e-01
-8 573 4096 1.398926e-01
-7 428 4096 1.044922e-01
-6 336 4096 8.203125e-02
-5 276 4096 6.738281e-02
-4 180 4096 4.394531e-02
-3 117 4096 2.856445e-02
-2 81 4096 1.977539e-02
-1 38 4096 9.277344e-03
0 14 4096 3.417969e-03
1 4 4096 9.765625e-04
2 3 4096 7.324219e-04
3 2 4096 4.882812e-04
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪单极性归零带宽无限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1922 4096 4.692383e-01
-29 1922 4096 4.692383e-01
-28 1919 4096 4.685059e-01
-27 1877 4096 4.582520e-01
-26 1820 4096 4.443359e-01
-25 1833 4096 4.475098e-01
-24 1797 4096 4.387207e-01
-23 1750 4096 4.272461e-01
-22 1701 4096 4.152832e-01
-21 1672 4096 4.082031e-01
-20 1645 4096 4.016113e-01
-19 1599 4096 3.903809e-01
-18 1542 4096 3.764648e-01
-17 1515 4096 3.698730e-01
-16 1413 4096 3.449707e-01
-15 1331 4096 3.249512e-01
-14 1234 4096 3.012695e-01
-13 1212 4096 2.958984e-01
-12 1028 4096 2.509766e-01
-11 977 4096 2.385254e-01
-10 856 4096 2.089844e-01
-9 805 4096 1.965332e-01
-8 654 4096 1.596680e-01
-7 555 4096 1.354980e-01
-6 426 4096 1.040039e-01
-5 351 4096 8.569336e-02
-4 239 4096 5.834961e-02
-3 195 4096 4.760742e-02
-2 105 4096 2.563477e-02
-1 63 4096 1.538086e-02
0 40 4096 9.765625e-03
1 16 4096 3.906250e-03
2 7 4096 1.708984e-03
3 4 4096 9.765625e-04
4 1 4096 2.441406e-04
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪单极性归零带宽受限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1940 4096 4.736328e-01
-29 1950 4096 4.760742e-01
-28 1915 4096 4.675293e-01
-27 1845 4096 4.504395e-01
-26 1837 4096 4.484863e-01
-25 1812 4096 4.423828e-01
-24 1790 4096 4.370117e-01
-23 1747 4096 4.265137e-01
-22 1693 4096 4.133301e-01
-21 1684 4096 4.111328e-01
-20 1624 4096 3.964844e-01
-19 1596 4096 3.896484e-01
-18 1525 4096 3.723145e-01
-17 1488 4096 3.632812e-01
-16 1405 4096 3.430176e-01
-15 1318 4096 3.217773e-01
-14 1220 4096 2.978516e-01
-13 1165 4096 2.844238e-01
-12 1024 4096 2.500000e-01
-11 950 4096 2.319336e-01
-10 803 4096 1.960449e-01
-9 756 4096 1.845703e-01
-8 596 4096 1.455078e-01
-7 514 4096 1.254883e-01
-6 389 4096 9.497070e-02
-5 309 4096 7.543945e-02
-4 213 4096 5.200195e-02
-3 156 4096 3.808594e-02
-2 88 4096 2.148438e-02
-1 48 4096 1.171875e-02
0 31 4096 7.568359e-03
1 8 4096 1.953125e-03
2 6 4096 1.464844e-03
3 2 4096 4.882812e-04
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪单极性升余弦带宽无限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1931 4096 4.714355e-01
-29 1920 4096 4.687500e-01
-28 1900 4096 4.638672e-01
-27 1876 4096 4.580078e-01
-26 1859 4096 4.538574e-01
-25 1749 4096 4.270020e-01
-24 1793 4096 4.377441e-01
-23 1797 4096 4.387207e-01
-22 1704 4096 4.160156e-01
-21 1661 4096 4.055176e-01
-20 1539 4096 3.757324e-01
-19 1587 4096 3.874512e-01
-18 1488 4096 3.632812e-01
-17 1417 4096 3.459473e-01
-16 1327 4096 3.239746e-01
-15 1215 4096 2.966309e-01
-14 1160 4096 2.832031e-01
-13 1108 4096 2.705078e-01
-12 982 4096 2.397461e-01
-11 877 4096 2.141113e-01
-10 777 4096 1.896973e-01
-9 654 4096 1.596680e-01
-8 547 4096 1.335449e-01
-7 439 4096 1.071777e-01
-6 361 4096 8.813477e-02
-5 255 4096 6.225586e-02
-4 164 4096 4.003906e-02
-3 106 4096 2.587891e-02
-2 45 4096 1.098633e-02
-1 20 4096 4.882812e-03
0 12 4096 2.929688e-03
1 6 4096 1.464844e-03
2 1 4096 2.441406e-04
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪单极性升余弦带宽受限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1931 4096 4.714355e-01
-29 1920 4096 4.687500e-01
-28 1900 4096 4.638672e-01
-27 1876 4096 4.580078e-01
-26 1859 4096 4.538574e-01
-25 1749 4096 4.270020e-01
-24 1793 4096 4.377441e-01
-23 1797 4096 4.387207e-01
-22 1704 4096 4.160156e-01
-21 1661 4096 4.055176e-01
-20 1539 4096 3.757324e-01
-19 1587 4096 3.874512e-01
-18 1488 4096 3.632812e-01
-17 1417 4096 3.459473e-01
-16 1327 4096 3.239746e-01
-15 1215 4096 2.966309e-01
-14 1160 4096 2.832031e-01
-13 1108 4096 2.705078e-01
-12 982 4096 2.397461e-01
-11 877 4096 2.141113e-01
-10 777 4096 1.896973e-01
-9 654 4096 1.596680e-01
-8 547 4096 1.335449e-01
-7 439 4096 1.071777e-01
-6 361 4096 8.813477e-02
-5 255 4096 6.225586e-02
-4 164 4096 4.003906e-02
-3 106 4096 2.587891e-02
-2 45 4096 1.098633e-02
-1 20 4096 4.882812e-03
0 12 4096 2.929688e-03
1 6 4096 1.464844e-03
2 1 4096 2.441406e-04
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪双极性不归零带宽无限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1910 4096 4.663086e-01
-29 1816 4096 4.433594e-01
-28 1802 4096 4.399414e-01
-27 1779 4096 4.343262e-01
-26 1751 4096 4.274902e-01
-25 1708 4096 4.169922e-01
-24 1650 4096 4.028320e-01
-23 1617 4096 3.947754e-01
-22 1528 4096 3.730469e-01
-21 1515 4096 3.698730e-01
-20 1407 4096 3.435059e-01
-19 1360 4096 3.320312e-01
-18 1297 4096 3.166504e-01
-17 1211 4096 2.956543e-01
-16 1138 4096 2.778320e-01
-15 1032 4096 2.519531e-01
-14 920 4096 2.246094e-01
-13 799 4096 1.950684e-01
-12 689 4096 1.682129e-01
-11 594 4096 1.450195e-01
-10 457 4096 1.115723e-01
-9 399 4096 9.741211e-02
-8 296 4096 7.226562e-02
-7 197 4096 4.809570e-02
-6 125 4096 3.051758e-02
-5 87 4096 2.124023e-02
-4 39 4096 9.521484e-03
-3 18 4096 4.394531e-03
-2 9 4096 2.197266e-03
-1 2 4096 4.882812e-04
0 1 4096 2.441406e-04
1 0 4096 0.000000e+00
2 0 4096 0.000000e+00
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪双极性不归零带宽受限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1902 4096 4.643555e-01
-29 1819 4096 4.440918e-01
-28 1805 4096 4.406738e-01
-27 1761 4096 4.299316e-01
-26 1745 4096 4.260254e-01
-25 1678 4096 4.096680e-01
-24 1645 4096 4.016113e-01
-23 1588 4096 3.876953e-01
-22 1519 4096 3.708496e-01
-21 1482 4096 3.618164e-01
-20 1395 4096 3.405762e-01
-19 1355 4096 3.308105e-01
-18 1281 4096 3.127441e-01
-17 1206 4096 2.944336e-01
-16 1125 4096 2.746582e-01
-15 990 4096 2.416992e-01
-14 889 4096 2.170410e-01
-13 806 4096 1.967773e-01
-12 682 4096 1.665039e-01
-11 586 4096 1.430664e-01
-10 428 4096 1.044922e-01
-9 383 4096 9.350586e-02
-8 271 4096 6.616211e-02
-7 181 4096 4.418945e-02
-6 118 4096 2.880859e-02
-5 82 4096 2.001953e-02
-4 30 4096 7.324219e-03
-3 17 4096 4.150391e-03
-2 9 4096 2.197266e-03
-1 2 4096 4.882812e-04
0 1 4096 2.441406e-04
1 0 4096 0.000000e+00
2 0 4096 0.000000e+00
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪双极性归零带宽无限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1876 4096 4.580078e-01
-29 1865 4096 4.553223e-01
-28 1856 4096 4.531250e-01
-27 1803 4096 4.401855e-01
-26 1739 4096 4.245605e-01
-25 1724 4096 4.208984e-01
-24 1689 4096 4.123535e-01
-23 1633 4096 3.986816e-01
-22 1559 4096 3.806152e-01
-21 1534 4096 3.745117e-01
-20 1476 4096 3.603516e-01
-19 1418 4096 3.461914e-01
-18 1335 4096 3.259277e-01
-17 1290 4096 3.149414e-01
-16 1159 4096 2.829590e-01
-15 1064 4096 2.597656e-01
-14 952 4096 2.324219e-01
-13 874 4096 2.133789e-01
-12 733 4096 1.789551e-01
-11 652 4096 1.591797e-01
-10 532 4096 1.298828e-01
-9 454 4096 1.108398e-01
-8 311 4096 7.592773e-02
-7 244 4096 5.957031e-02
-6 148 4096 3.613281e-02
-5 101 4096 2.465820e-02
-4 54 4096 1.318359e-02
-3 26 4096 6.347656e-03
-2 8 4096 1.953125e-03
-1 5 4096 1.220703e-03
0 2 4096 4.882812e-04
1 0 4096 0.000000e+00
2 0 4096 0.000000e+00
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪双极性归零带宽受限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1895 4096 4.626465e-01
-29 1891 4096 4.616699e-01
-28 1843 4096 4.499512e-01
-27 1774 4096 4.331055e-01
-26 1745 4096 4.260254e-01
-25 1707 4096 4.167480e-01
-24 1700 4096 4.150391e-01
-23 1633 4096 3.986816e-01
-22 1555 4096 3.796387e-01
-21 1521 4096 3.713379e-01
-20 1436 4096 3.505859e-01
-19 1412 4096 3.447266e-01
-18 1339 4096 3.269043e-01
-17 1240 4096 3.027344e-01
-16 1132 4096 2.763672e-01
-15 1024 4096 2.500000e-01
-14 923 4096 2.253418e-01
-13 846 4096 2.065430e-01
-12 703 4096 1.716309e-01
-11 629 4096 1.535645e-01
-10 482 4096 1.176758e-01
-9 411 4096 1.003418e-01
-8 273 4096 6.665039e-02
-7 210 4096 5.126953e-02
-6 118 4096 2.880859e-02
-5 82 4096 2.001953e-02
-4 38 4096 9.277344e-03
-3 21 4096 5.126953e-03
-2 6 4096 1.464844e-03
-1 2 4096 4.882812e-04
0 0 4096 0.000000e+00
1 0 4096 0.000000e+00
2 0 4096 0.000000e+00
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪双极性升余弦带宽无限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1879 4096 4.587402e-01
-29 1865 4096 4.553223e-01
-28 1824 4096 4.453125e-01
-27 1810 4096 4.418945e-01
-26 1786 4096 4.360352e-01
-25 1650 4096 4.028320e-01
-24 1678 4096 4.096680e-01
-23 1668 4096 4.072266e-01
-22 1570 4096 3.833008e-01
-21 1500 4096 3.662109e-01
-20 1382 4096 3.374023e-01
-19 1363 4096 3.327637e-01
-18 1269 4096 3.098145e-01
-17 1184 4096 2.890625e-01
-16 1086 4096 2.651367e-01
-15 947 4096 2.312012e-01
-14 878 4096 2.143555e-01
-13 797 4096 1.945801e-01
-12 653 4096 1.594238e-01
-11 550 4096 1.342773e-01
-10 444 4096 1.083984e-01
-9 346 4096 8.447266e-02
-8 240 4096 5.859375e-02
-7 170 4096 4.150391e-02
-6 102 4096 2.490234e-02
-5 53 4096 1.293945e-02
-4 28 4096 6.835938e-03
-3 13 4096 3.173828e-03
-2 6 4096 1.464844e-03
-1 2 4096 4.882812e-04
0 0 4096 0.000000e+00
1 0 4096 0.000000e+00
2 0 4096 0.000000e+00
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

有噪双极性升余弦带宽受限信号

全频带信噪比(dB) 误比特数 传输比特数 误比特率
-30 1879 4096 4.587402e-01
-29 1865 4096 4.553223e-01
-28 1824 4096 4.453125e-01
-27 1810 4096 4.418945e-01
-26 1786 4096 4.360352e-01
-25 1650 4096 4.028320e-01
-24 1678 4096 4.096680e-01
-23 1668 4096 4.072266e-01
-22 1570 4096 3.833008e-01
-21 1500 4096 3.662109e-01
-20 1382 4096 3.374023e-01
-19 1363 4096 3.327637e-01
-18 1269 4096 3.098145e-01
-17 1184 4096 2.890625e-01
-16 1086 4096 2.651367e-01
-15 947 4096 2.312012e-01
-14 878 4096 2.143555e-01
-13 797 4096 1.945801e-01
-12 653 4096 1.594238e-01
-11 550 4096 1.342773e-01
-10 444 4096 1.083984e-01
-9 346 4096 8.447266e-02
-8 240 4096 5.859375e-02
-7 170 4096 4.150391e-02
-6 102 4096 2.490234e-02
-5 53 4096 1.293945e-02
-4 28 4096 6.835938e-03
-3 13 4096 3.173828e-03
-2 6 4096 1.464844e-03
-1 2 4096 4.882812e-04
0 0 4096 0.000000e+00
1 0 4096 0.000000e+00
2 0 4096 0.000000e+00
3 0 4096 0.000000e+00
4 0 4096 0.000000e+00
5 0 4096 0.000000e+00
6 0 4096 0.000000e+00
7 0 4096 0.000000e+00
8 0 4096 0.000000e+00
9 0 4096 0.000000e+00
10 0 4096 0.000000e+00

8.7 数字频带传输系统仿真结果数据-QPSK

QPSK仿真误比特数据

全频带信噪比(dB) 通带信噪比(dB) 信号功率 全频带噪声功率 噪声双边功率谱密度 通带噪声功率 误比特数 传输比特数 误比特率
-40 -24.95 2.000000e+00 2.000000e+04 3.814697e-02 6.250000e+02 3824 8192 4.667969e-01
-39 -23.95 2.000000e+00 1.588656e+04 3.030122e-02 4.964551e+02 3716 8192 4.536133e-01
-38 -22.95 2.000000e+00 1.261915e+04 2.406911e-02 3.943483e+02 3794 8192 4.631348e-01
-37 -21.95 2.000000e+00 1.002374e+04 1.911878e-02 3.132420e+02 3714 8192 4.533691e-01
-36 -20.95 2.000000e+00 7.962143e+03 1.518658e-02 2.488170e+02 3671 8192 4.481201e-01
-35 -19.95 2.000000e+00 6.324555e+03 1.206313e-02 1.976424e+02 3659 8192 4.466553e-01
-34 -18.95 2.000000e+00 5.023773e+03 9.582086e-03 1.569929e+02 3545 8192 4.327393e-01
-33 -17.95 2.000000e+00 3.990525e+03 7.611322e-03 1.247039e+02 3527 8192 4.305420e-01
-32 -16.95 2.000000e+00 3.169786e+03 6.045888e-03 9.905582e+01 3409 8192 4.161377e-01
-31 -15.95 2.000000e+00 2.517851e+03 4.802419e-03 7.868284e+01 3333 8192 4.068604e-01
-30 -14.95 2.000000e+00 2.000000e+03 3.814697e-03 6.250000e+01 3289 8192 4.014893e-01
-29 -13.95 2.000000e+00 1.588656e+03 3.030122e-03 4.964551e+01 3195 8192 3.900146e-01
-28 -12.95 2.000000e+00 1.261915e+03 2.406911e-03 3.943483e+01 3072 8192 3.750000e-01
-27 -11.95 2.000000e+00 1.002374e+03 1.911878e-03 3.132420e+01 2910 8192 3.552246e-01
-26 -10.95 2.000000e+00 7.962143e+02 1.518658e-03 2.488170e+01 2841 8192 3.468018e-01
-25 -9.95 2.000000e+00 6.324555e+02 1.206313e-03 1.976424e+01 2728 8192 3.330078e-01
-24 -8.95 2.000000e+00 5.023773e+02 9.582086e-04 1.569929e+01 2572 8192 3.139648e-01
-23 -7.95 2.000000e+00 3.990525e+02 7.611322e-04 1.247039e+01 2353 8192 2.872314e-01
-22 -6.95 2.000000e+00 3.169786e+02 6.045888e-04 9.905582e+00 2176 8192 2.656250e-01
-21 -5.95 2.000000e+00 2.517851e+02 4.802419e-04 7.868284e+00 1992 8192 2.431641e-01
-20 -4.95 2.000000e+00 2.000000e+02 3.814697e-04 6.250000e+00 1824 8192 2.226562e-01
-19 -3.95 2.000000e+00 1.588656e+02 3.030122e-04 4.964551e+00 1533 8192 1.871338e-01
-18 -2.95 2.000000e+00 1.261915e+02 2.406911e-04 3.943483e+00 1359 8192 1.658936e-01
-17 -1.95 2.000000e+00 1.002374e+02 1.911878e-04 3.132420e+00 1143 8192 1.395264e-01
-16 -0.95 2.000000e+00 7.962143e+01 1.518658e-04 2.488170e+00 908 8192 1.108398e-01
-15 0.05 2.000000e+00 6.324555e+01 1.206313e-04 1.976424e+00 707 8192 8.630371e-02
-14 1.05 2.000000e+00 5.023773e+01 9.582086e-05 1.569929e+00 512 8192 6.250000e-02
-13 2.05 2.000000e+00 3.990525e+01 7.611322e-05 1.247039e+00 362 8192 4.418945e-02
-12 3.05 2.000000e+00 3.169786e+01 6.045888e-05 9.905582e-01 235 8192 2.868652e-02
-11 4.05 2.000000e+00 2.517851e+01 4.802419e-05 7.868284e-01 178 8192 2.172852e-02
-10 5.05 2.000000e+00 2.000000e+01 3.814697e-05 6.250000e-01 90 8192 1.098633e-02
-9 6.05 2.000000e+00 1.588656e+01 3.030122e-05 4.964551e-01 46 8192 5.615234e-03
-8 7.05 2.000000e+00 1.261915e+01 2.406911e-05 3.943483e-01 25 8192 3.051758e-03
-7 8.05 2.000000e+00 1.002374e+01 1.911878e-05 3.132420e-01 15 8192 1.831055e-03
-6 9.05 2.000000e+00 7.962143e+00 1.518658e-05 2.488170e-01 3 8192 3.662109e-04
-5 10.05 2.000000e+00 6.324555e+00 1.206313e-05 1.976424e-01 0 8192 0.000000e+00
-4 11.05 2.000000e+00 5.023773e+00 9.582086e-06 1.569929e-01 0 8192 0.000000e+00
-3 12.05 2.000000e+00 3.990525e+00 7.611322e-06 1.247039e-01 0 8192 0.000000e+00
-2 13.05 2.000000e+00 3.169786e+00 6.045888e-06 9.905582e-02 0 8192 0.000000e+00
-1 14.05 2.000000e+00 2.517851e+00 4.802419e-06 7.868284e-02 0 8192 0.000000e+00
0 15.05 2.000000e+00 2.000000e+00 3.814697e-06 6.250000e-02 0 8192 0.000000e+00

8.8 数字频带传输系统仿真结果数据-16QAM

16QAM仿真误比特数据

全频带信噪比(dB) 通带信噪比(dB) 信号功率 全频带噪声功率 噪声双边功率谱密度 通带噪声功率 误比特数 传输比特数 误比特率
-40 -24.95 1.008594e+01 1.008594e+05 1.923740e-01 3.151855e+03 3841 8192 4.688721e-01
-39 -23.95 9.906250e+00 7.868814e+04 1.500857e-01 2.459004e+03 3952 8192 4.824219e-01
-38 -22.95 9.988281e+00 6.302179e+04 1.202045e-01 1.969431e+03 3821 8192 4.664307e-01
-37 -21.95 9.953125e+00 4.988379e+04 9.514578e-02 1.558868e+03 3875 8192 4.730225e-01
-36 -20.95 9.914062e+00 3.946859e+04 7.528037e-02 1.233394e+03 3773 8192 4.605713e-01
-35 -19.95 1.000781e+01 3.164748e+04 6.036278e-02 9.889838e+02 3830 8192 4.675293e-01
-34 -18.95 1.008203e+01 2.532492e+04 4.830345e-02 7.914037e+02 3663 8192 4.471436e-01
-33 -17.95 1.005078e+01 2.005395e+04 3.824986e-02 6.266858e+02 3647 8192 4.451904e-01
-32 -16.95 1.000000e+01 1.584893e+04 3.022944e-02 4.952791e+02 3648 8192 4.453125e-01
-31 -15.95 1.000391e+01 1.259417e+04 2.402148e-02 3.935679e+02 3611 8192 4.407959e-01
-30 -14.95 9.863281e+00 9.863281e+03 1.881272e-02 3.082275e+02 3565 8192 4.351807e-01
-29 -13.95 9.812500e+00 7.794346e+03 1.486653e-02 2.435733e+02 3497 8192 4.268799e-01
-28 -12.95 1.001562e+01 6.319432e+03 1.205336e-02 1.974823e+02 3375 8192 4.119873e-01
-27 -11.95 1.007812e+01 5.051028e+03 9.634071e-03 1.578446e+02 3300 8192 4.028320e-01
-26 -10.95 1.011719e+01 4.027725e+03 7.682276e-03 1.258664e+02 3183 8192 3.885498e-01
-25 -9.95 9.867187e+00 3.120279e+03 5.951459e-03 9.750871e+01 3103 8192 3.787842e-01
-24 -8.95 1.003906e+01 2.521698e+03 4.809758e-03 7.880308e+01 2905 8192 3.546143e-01
-23 -7.95 1.008203e+01 2.011630e+03 3.836879e-03 6.286343e+01 2726 8192 3.327637e-01
-22 -6.95 9.953125e+00 1.577464e+03 3.008774e-03 4.929575e+01 2516 8192 3.071289e-01
-21 -5.95 9.988281e+00 1.257450e+03 2.398396e-03 3.929532e+01 2348 8192 2.866211e-01
-20 -4.95 1.007031e+01 1.007031e+03 1.920760e-03 3.146973e+01 2123 8192 2.591553e-01
-19 -3.95 1.000781e+01 7.949488e+02 1.516245e-03 2.484215e+01 1978 8192 2.414551e-01
-18 -2.95 9.945313e+00 6.275068e+02 1.196874e-03 1.960959e+01 1743 8192 2.127686e-01
-17 -1.95 9.832031e+00 4.927689e+02 9.398820e-04 1.539903e+01 1566 8192 1.911621e-01
-16 -0.95 9.945312e+00 3.959300e+02 7.551766e-04 1.237281e+01 1408 8192 1.718750e-01
-15 0.05 1.008203e+01 3.188218e+02 6.081044e-04 9.963182e+00 1182 8192 1.442871e-01
-14 1.05 1.006250e+01 2.527586e+02 4.820987e-04 7.898705e+00 1020 8192 1.245117e-01
-13 2.05 1.001953e+01 1.999159e+02 3.813094e-04 6.247373e+00 862 8192 1.052246e-01
-12 3.05 9.914062e+00 1.571273e+02 2.996965e-04 4.910228e+00 711 8192 8.679199e-02
-11 4.05 1.001562e+01 1.260892e+02 2.404962e-04 3.940289e+00 534 8192 6.518555e-02
-10 5.05 1.003516e+01 1.003516e+02 1.914054e-04 3.135986e+00 442 8192 5.395508e-02
-9 6.05 1.006641e+01 7.996031e+01 1.525122e-04 2.498760e+00 312 8192 3.808594e-02
-8 7.05 1.002344e+01 6.324362e+01 1.206276e-04 1.976363e+00 210 8192 2.563477e-02
-7 8.05 9.929687e+00 4.976633e+01 9.492173e-05 1.555198e+00 129 8192 1.574707e-02
-6 9.05 1.014844e+01 4.040166e+01 7.706005e-05 1.262552e+00 90 8192 1.098633e-02
-5 10.05 1.001562e+01 3.167219e+01 6.040990e-05 9.897558e-01 45 8192 5.493164e-03
-4 11.05 1.007031e+01 2.529548e+01 4.824730e-05 7.904838e-01 21 8192 2.563477e-03
-3 12.05 1.003125e+01 2.001498e+01 3.817554e-05 6.254680e-01 25 8192 3.051758e-03
-2 13.05 9.941406e+00 1.575607e+01 3.005231e-05 4.923771e-01 6 8192 7.324219e-04
-1 14.05 1.012891e+01 1.275154e+01 2.432163e-05 3.984855e-01 4 8192 4.882812e-04
0 15.05 9.980469e+00 9.980469e+00 1.903623e-05 3.118896e-01 1 8192 1.220703e-04

数字传输系统的最佳接收与误码分析-python实现相关推荐

  1. 通信原理仿真报告-数字传输系统的最佳接收与误码分析

    通信原理仿真报告-数字传输系统的最佳接收与误码分析 一.概述 1.1 研究背景 在数字通信系统中,需要将输入的数字序列映射为信号波形在信道中传输,此时信源输出数字序列,经过信号映射后成为适于信道传输的 ...

  2. 有关BPSK、QPSK调制信号的通信链路仿真,以及误码分析

    之前简单叙述了一个随机序列如何使用MATLAB中内置函数进行数字调制,但是距离通信链路级仿真还仅仅是准备阶段,要想感受完整的通信仿真过程还有许多精细的模块需要学习.回顾通信的整个过程,大致分为三个部分 ...

  3. 通信原理-随相数字信号的最佳接收

    写在前面:本文截屏自西安电子科技大学曹丽娜 视频学习地址:https://www.bilibili.com/video/BV1B7411o7Jo?p=34 仅供个人学习和构建知识体系所用. 随相信号: ...

  4. 幅度响应怎么计算_四电平脉冲幅度调制(PAM4)信号的误码分析

    - PAM4 是一种高效利用带宽传输串行数据的方法,所需的通道带宽仅为 NRZ 所需带宽的一半. 用户需要具有即时数据访问能力的互联网络,这种不断增长的需求推动着以太网.64G光纤通道.CEI-56 ...

  5. 基于MATLAB的多进制数字调制信号的矢量星座图分析

    1 前言 通信即传输信息,进行信息的时空转移.通信系统的作用就是将信息从信源发送到一个或多个目的地.实现通信的方式和手段很多,如手势.语言.旌旗.烽火台和击鼓传令,以及现代社会的电报.电话.广播.电视 ...

  6. 通信原理-第9章-数字信号的最佳接收

    学习步骤 首先看该章节后的习题与小结,圈出术语 带着名术语去书本找解释 带着术语去理解书中的图标.案例及例题 应用 观看该章节后的习题与小结,圈出术语 最佳接收:接收滤波器接收最高质量的信号,我们将错 ...

  7. 通信原理最佳接收-最佳接收准则

    写在前面:本文截屏自西安电子科技大学曹丽娜 视频学习地址:https://www.bilibili.com/video/BV1B7411o7Jo?p=34 仅供个人学习和构建知识体系所用. 信号接收: ...

  8. 《通信原理》复习笔记9----第九章数字信号的最佳接收及第九章相关例题

    系列文章链接目录 一.<通信原理>复习笔记1----第一章绪论 二.<通信原理>复习笔记1----第一章绪论相关例题 三.<通信原理>复习笔记3----第三章随机过 ...

  9. 数字信号的最佳接收 matlab,数字信号的最佳接收的MATLAB仿真

    数字信号的最佳接收的MATLAB仿真 数字信号的最佳接收的仿真数字信号的最佳接收的仿真一.一.实验目的实验目的1. 理解数字信号胡最佳接收原理及最佳接收准则.2. 掌握二进制确知信号最佳接收机的设计. ...

最新文章

  1. 多进程python_python -- 多进程
  2. HDU 5298 Solid Geometry Homework 暴力
  3. ubuntu11.10 安装tpc_w
  4. 注意力机制中的Q、K和V的意义
  5. Linux xargs命令
  6. Python中带else子句的for循环执行过程
  7. Bias-Variance Tradeoff解释
  8. 最新消息,我的Zcash钱包收到鱼池的ZEC打款了
  9. Mysql索引优化及面试题
  10. win7系统和银行驱动安装
  11. 阿里云短信验证码提示“Message“:“模板变量缺少对应参数值“
  12. Python3快速入门-Python是什么
  13. AI基础:自然语言处理基础之序列模型
  14. 学习英文之社区,博客及源码
  15. python批量修改列名_pandas修改DataFrame列名的实现方法
  16. Python 编程1000例(5):拿鸡蛋问题和回文数问题
  17. Ubuntu安装后MTK系列网卡无法开启wifi和蓝牙的部分解决方式
  18. 前端性能优化:DNS 预解析
  19. 为什么一定要和赚过钱的人学赚钱?
  20. 数据库身份证号加密密码加密_使用密码加密数据

热门文章

  1. 逆变器的输出外特性分析
  2. 全职高手主题曲计算机,全职高手电视剧所有歌曲介绍 主题曲片尾曲插曲
  3. 【Python-OpenCV 人物素描】
  4. java分为_Java分为三个版本:_______、_______和_______
  5. Xn数列(矩阵乘法+快速幂+慢速乘法)
  6. [转载]图解《越狱》中纸玫瑰的折法
  7. 什么是懒惰的苏珊(Lazy Susan)
  8. 2018年“京东好店”排行榜发布 这100家店凭什么上榜
  9. Arduino开发之GP2Y0A21 Distance Sensor
  10. 【陈工笔记】# latex中,“_”如何写? #