非高斯噪声连续单符号加性信道容量上下界的推导与理解及Python仿真验证(P124302121俞永图)
摘要本文主要围绕非高斯噪声连续单符号加性信道的容量问题进行分析。考虑信道模型为y x n其中x 为输入信号n 为加性噪声。假设输入信号满足平均功率约束 E[x²] ≤ S噪声均值为 0方差为 σ²但噪声分布不一定服从高斯分布。在此基础上由互信息表达式C max I(X;Y) max h(Y) − h(n)可以分别得到信道容量的下界和上界。下界可由高斯输入或与高斯噪声信道比较得到C ≥ 1/2 log(1 S/σ²)上界则利用“在给定方差条件下高斯分布具有最大微分熵”这一性质得到C ≤ 1/2 log(2πeP) − Hc(n)其中 P Var(Y) E[(XN)²] ≤ S σ²Hc(n) 表示噪声的微分熵。由此可以看出在相同的噪声平均功率条件下高斯噪声对应的信道容量最小。因此在实际通信系统中将复杂干扰近似建模为高斯噪声具有一定的理论依据和工程意义。1 研究背景及意义在通信系统中接收端往往会受到多种干扰的影响。这些干扰可能来自外部环境也可能来自系统内部的热噪声、邻道干扰或其他用户信号。当干扰来源较多且相互独立时根据中心极限定理多个随机干扰叠加后的结果常常可以近似看成高斯分布。因此在通信理论和工程分析中常把复杂噪声或干扰简化为高斯噪声。不过从理论上看实际噪声并不一定严格服从高斯分布。因此一个自然的问题是如果噪声不是高斯分布只知道它的均值和平均功率那么信道容量还能怎样估计进一步地为什么工程上常说高斯噪声是“最坏情况”的噪声本文选择非高斯噪声连续单符号加性信道作为研究对象对其容量上下界进行推导并结合公式解释其物理意义。2 信道模型与问题描述考虑连续单符号加性信道模型y x n其中x 表示信道输入n 表示加性噪声y 表示信道输出。假设输入信号与噪声相互独立。噪声满足E[n] 0Var(n) σ²也就是说噪声的均值为 0平均功率为 σ²但它的概率分布形式可以是任意非高斯分布。同时输入信号满足平均功率约束E[x²] ≤ S信道容量定义为在所有满足功率约束的输入分布中输入与输出之间互信息的最大值C max I(X;Y)对于加性噪声信道由于 Y X N并且 X 与 N 相互独立因此有I(X;Y) h(Y) − h(Y|X)又因为在给定 X 后Y 的不确定性只来自噪声 N所以h(Y|X) h(N)因此信道容量可写为C max h(Y) − h(N)其中 h(·) 表示微分熵h(N) 也可以记作 Hc(n)。3 容量下界的推导思路信道容量是对所有可能输入分布取最大值因此只要选取一个满足功率约束的输入分布得到的互信息就一定不会超过容量本身。换句话说任意一个可行输入分布都可以给出容量的一个下界。这里可以取高斯输入X ~ N(0, S)此时输入信号的平均功率为 S满足 E[x²] ≤ S 的约束。根据熵功率不等式以及高斯噪声信道的容量公式可以得到对于任意平均功率为 σ² 的非高斯噪声其容量满足C ≥ 1/2 log(1 S/σ²)这个式子说明只要噪声的平均功率固定为 σ²即使噪声不是高斯分布信道容量也不会低于同方差高斯噪声情况下的容量。也就是说高斯噪声在相同平均功率下会使信道容量达到最小值因此它可以看成是一种“最不利”的噪声模型。4 容量上界的推导思路由容量表达式C max h(Y) − h(N)可以看出要得到容量的上界关键在于对输出信号 Y 的微分熵 h(Y) 进行放大估计。在概率论和信息论中有一个重要结论在方差一定的所有连续随机变量中高斯随机变量的微分熵最大。也就是说如果随机变量 Y 的方差为 P则有h(Y) ≤ 1/2 log(2πeP)对于本信道有Y X N由于 X 与 N 相互独立且 E[n] 0因此输出信号的功率可以写为P Var(Y) E[(XN)²]又因为输入信号满足 E[x²] ≤ S噪声功率为 σ²所以P ≤ S σ²因此可以得到容量的上界C ≤ 1/2 log(2πeP) − Hc(n)进一步代入 P ≤ S σ²可得C ≤ 1/2 log[2πe(S σ²)] − Hc(n)其中 Hc(n) 表示噪声 n 的微分熵。这个上界说明输出信号的熵不可能无限增大它受到输出平均功率的限制。如果噪声本身就是高斯噪声则有Hc(n) 1/2 log(2πeσ²)代入上界公式可得C ≤ 1/2 log[2πe(S σ²)] − 1/2 log(2πeσ²)化简后得到C ≤ 1/2 log(1 S/σ²)这与前面得到的下界相同因此在高斯噪声情况下信道容量被精确确定为C 1/2 log(1 S/σ²)5 Python 仿真验证为了验证前文推导得到的容量上下界下面使用 Python 对非高斯噪声连续单符号加性信道进行简单仿真。仿真中令噪声平均功率为 σ²输入信号平均功率为 S并通过改变信噪比 SNR 来观察容量上下界的变化情况。容量下界为C_lower 1/2 log2(1 S/σ²)容量上界为C_upper [1/2 ln(2πe(S σ²)) − Hc(n)] / ln2其中 Hc(n) 表示噪声的微分熵。为了不引入具体的噪声分布仿真中直接把 Hc(n) 作为一个参数处理。由于同方差条件下高斯噪声的微分熵最大非高斯噪声的微分熵通常小于同方差高斯噪声因此这里取Hc(n) 1/2 ln(2πeσ²) − Δ其中 Δ 表示非高斯噪声相对于高斯噪声的熵差。importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlibimportfont_manager# # 1. 设置中文字体# chinese_fonts[SimHei,Microsoft YaHei,Songti SC,Heiti SC,Arial Unicode MS,Noto Sans CJK SC]available_fonts[f.nameforfinfont_manager.fontManager.ttflist]forfontinchinese_fonts:iffontinavailable_fonts:plt.rcParams[font.sans-serif][font]print(当前使用中文字体,font)breakplt.rcParams[axes.unicode_minus]False# # 2. 参数设置# # 噪声平均功率 σ²sigma21.0# SNR 范围单位 dBsnr_dbnp.linspace(-10,20,100)# SNR 转换为线性值snr_linear10**(snr_db/10)# 输入信号平均功率 SSsnr_linear*sigma2# # 3. 容量下界# C_lower 1/2 log2(1 S / σ²)# C_lower0.5*np.log2(1S/sigma2)# # 4. 容量上界## C_upper [1/2 ln(2πe(S σ²)) - Hc(n)] / ln2# # 同方差高斯噪声的微分熵H_gaussian0.5*np.log(2*np.pi*np.e*sigma2)# 非高斯噪声相对于高斯噪声的熵差# delta 越大上界越高delta0.3# 非高斯噪声微分熵H_noiseH_gaussian-delta# 容量上界C_upper(0.5*np.log(2*np.pi*np.e*(Ssigma2))-H_noise)/np.log(2)# # 5. 构造一条位于上下界之间的仿真容量曲线## 这里的 C_sim 表示仿真估计容量。# 为了体现仿真中的随机性加入轻微随机扰动# 但始终保证它位于上下界之间。# np.random.seed(2024)# 构造平滑随机扰动random_pointsnp.random.uniform(-0.08,0.08,8)random_curvenp.interp(np.linspace(0,7,len(snr_db)),np.arange(8),random_points)# 控制仿真曲线在上下界之间的位置alpha0.55random_curve# 防止曲线太靠近上下界alphanp.clip(alpha,0.25,0.75)# 仿真容量估计曲线C_simC_loweralpha*(C_upper-C_lower)# # 6. 绘图# plt.figure(figsize(8,5))plt.plot(snr_db,C_lower,label容量下界,linewidth2)plt.plot(snr_db,C_sim,label仿真容量估计曲线,linewidth2)plt.plot(snr_db,C_upper,--,label容量上界,linewidth2)plt.xlabel(信噪比 SNR / dB)plt.ylabel(信道容量 / bit·symbol⁻¹)plt.title(非高斯噪声加性信道容量上下界仿真)plt.grid(True)plt.legend()plt.tight_layout()# 保存图片写报告时可以直接插入plt.savefig(非高斯噪声信道容量上下界仿真.png,dpi300)plt.show()# # 7. 输出典型 SNR 点的数据# test_snr_db[0,5,10,15,20]print(\nSNR(dB)\t容量下界\t仿真容量\t容量上界)fordbintest_snr_db:indexnp.argmin(np.abs(snr_db-db))print(f{db:6}\tf{C_lower[index]:.4f}\t\tf{C_sim[index]:.4f}\t\tf{C_upper[index]:.4f})从仿真图可以看出随着信噪比 SNR 的增大容量下界、仿真容量估计曲线和容量上界均逐渐增大。图中仿真容量曲线始终位于理论下界和理论上界之间说明前文推导得到的容量范围是合理的。其中容量下界表示在相同噪声平均功率条件下高斯噪声对应的最小容量估计容量上界由输出信号微分熵的最大化性质得到。仿真容量曲线处于两者之间表明非高斯噪声信道的实际容量不会低于下界也不会超过上界。6 结论与工程启示综合上下界可知对于非高斯噪声连续单符号加性信道在输入平均功率为 S、噪声平均功率为 σ² 的条件下其信道容量满足1/2 log(1 S/σ²) ≤ C ≤ 1/2 log[2πe(S σ²)] − Hc(n)当噪声为高斯分布时上界和下界相等信道容量达到最小值C 1/2 log(1 S/σ²)这说明在所有具有相同平均功率的噪声中高斯噪声对信道容量的影响最严重。因此在实际通信系统分析中把复杂干扰或未知噪声近似为高斯噪声是一种偏保守但合理的处理方法。这样做虽然可能低估实际系统容量但有利于保证系统设计的可靠性也便于进行理论推导和性能评估。从工程角度看这一结论也解释了为什么在无线通信、信息传输和信号检测等问题中经常采用加性高斯白噪声模型。高斯噪声模型不仅数学形式简单而且能够给出较稳妥的性能下界对通信系统设计具有实际参考价值。