蜂窝通信系统前向与反向链路同频干扰分布仿真
项目介绍
本项目是一个基于MATLAB开发的无线通信链路级仿真程序。其主要目的是评估和分析蜂窝移动通信系统在特定的频率复用模式(Frequency Reuse)下,前向链路(Forward Link)与反向链路(Reverse Link)的同频干扰(Co-channel Interference, CCI)特性。
通过构建基于六边形小区的蜂窝网络拓扑,程序利用蒙特卡洛(Monte Carlo)方法模拟了大量的随机用户分布场景,结合路径损耗和对数正态阴影衰落模型,计算并统计了系统中的有用信号功率、干扰功率以及信干比(SIR)分布。该仿真有助于理解簇大小(Cluster Size, N)对系统抗干扰性能的影响。
功能特性
- 标准六边形网络建模:构建包含中心小区及第一层6个同频干扰小区的蜂窝网络几何结构。
- 双链路干扰分析:
*
前向链路(下行):仿真基站(BS)发往移动台(MS)的信号,考虑周围6个同频基站对中心目标用户的干扰。
*
反向链路(上行):仿真移动台(MS)发往基站(BS)的信号,考虑周围6个同频小区内的随机用户对中心基站的干扰。
* 距离相关的路径损耗模型(Path Loss Exponent)。
* 对数正态阴影衰落(Log-normal Shadowing)模型,模拟环境遮挡带来的信号波动。
- 蒙特卡洛统计模拟:支持设置大量迭代次数(如20,000次),确保统计结果的收敛性和准确性。
- 多维数据可视化:
* 网络拓扑与节点位置示意图。
* 干扰功率的概率密度函数(PDF)与直方图。
* 前向与反向链路干扰的累积分布函数(CDF)对比。
* 信干比(SIR)分布直方图与箱线图统计。
使用方法
- 确保计算机安装有 MATLAB 软件。
- 将源文件保存至 MATLAB 当前工作目录或路径中。
- 直接运行
main 函数即可启动仿真。 - 仿真运行过程中会在控制台输出当前的配置参数(簇大小 N 和 迭代次数)。
- 运行结束后,程序将自动生成包含6个子图的分析图表窗口。
系统要求
- 软件环境:MATLAB R2016a 及以上版本(代码使用了
histogram、ksdensity 等统计工具箱函数)。 - 工具箱:Statistics and Machine Learning Toolbox(用于概率密度估计和分布拟合)。
---
核心算法与实现逻辑
本项目的 main 函数完整实现了从参数配置、场景构建、循环计算到结果展示的全过程。以下是对代码实际实现逻辑的详细分析:
1. 仿真参数配置
程序首先定义了关键的物理层和网络层参数:
- 簇大小 (N=7):决定了同频复用距离。
- 小区半径 (R=1000m):定义小区覆盖范围。
- 传播模型参数:路径损耗指数 PLE=4.0,阴影衰落标准差=8dB。
- 发射功率:基站(43dBm)与移动台(23dBm)被设定为恒定值,未模拟功率控制。
2. 网络几何结构构建
- 根据公式 $D = R cdot sqrt{3N}$ 计算同频复用距离 $D$。
- 计算第一层6个干扰小区的中心坐标。这些坐标分布在距离中心小区 $D$ 的位置,角度间隔为60度,形成标准的六边形蜂窝复用格局。
3. 蒙特卡洛仿真循环
程序执行指定次数(默认为20000次)的循环,每次迭代代表一个随机的时间快照:
#### A. 位置生成
- 受害者用户:在中心小区内利用拒绝采样法生成均匀分布的随机坐标。
- 干扰源位置:
*
前向链路:干扰源为6个同频小区的基站,其位置是
固定的(位于各同频小区中心)。
*
反向链路:干扰源为6个同频小区内的移动台,程序在每个同频小区内各生成一个
随机位置的用户。
#### B. 链路距离计算
- 信号链路:计算中心用户与中心基站之间的欧氏距离。为防止数值计算异常,设置了最小距离保护(10米)。
- 前向干扰路径:计算6个同频基站(干扰源)到中心用户(接收机)的距离。
- 反向干扰路径:计算6个同频用户(干扰源)到中心基站(接收机,位于原点)的距离。
#### C. 功率计算(含路径损耗与阴影衰落)
程序通过辅助逻辑计算接收功率(Watt):
- 有用信号:基于发射功率、链路距离和随机生成的阴影衰落值计算接收功率。
- 干扰信号累积:
*
前向干扰:分别计算6个基站到达用户的接收功率,并在
线性域(Watts)进行标量求和,之后转换为 dBm。
*
反向干扰:分别计算6个干扰用户到达中心基站的接收功率,同样在线性域求和后转换。
*
注意:代码正确实现了非相干信号功率叠加(功率相加而非电压相加)。
#### D. 信干比 (SIR) 计算
在对数域直接相减计算 SIR:
- $SIR_{Fwd} = Signal_{Fwd} (dBm) - Interference_{Fwd} (dBm)$
- $SIR_{Rev} = Signal_{Rev} (dBm) - Interference_{Rev} (dBm)$
4. 结果可视化
代码最后生成一个包含6个子图的 Figure:
- 拓扑示意:绘制中心小区和6个干扰小区的六边形轮廓,并标出BS(三角形)和MS(圆点)的位置,直观展示几何关系。
- 前向干扰 PDF:通过直方图和核密度估计(KDE)曲线展示前向链路干扰功率的分布。
- 反向干扰 PDF:展示反向链路干扰功率的分布,通常由于干扰源位置的随机性,其分布方差可能与前向不同。
- CDF 对比:将前向和反向干扰的累积分布函数绘制在同一坐标系下,便于比较两者干扰水平的差异。
- SIR 分布直方图:重叠展示前向和反向 SIR 的直方图。
- SIR 箱线图:通过 Boxplot 展示 SIR 的中位数、四分位数和异常值范围,提供统计学上的性能对比。
---
关键辅助函数分析
虽然代码片段中展示了辅助函数定义,以下是其具体逻辑描述:
get_cochannel_coordinates(Distance)
* 输入复用距离 $D$,利用极坐标转换生成6个干扰小区的中心点 $(x, y)$。虽然实际蜂窝网络中角度随 $N$ 旋转,但该函数简化使用了 0, 60, ..., 300 度的标准环形分布,这对于各向同性的路径损耗统计分析是通用的近似处理。
generate_random_pos_hex(R, center_x, center_y)
* 实现了在指定中心和半径的六边形内生成均匀分布点的逻辑。
*
算法:采用
拒绝采样(Rejection Sampling)。
1. 在六边形的外接矩形范围内生成随机点。
2. 判断该点是否位于六边形内部(通过几何不等式或距离判断)。
3. 如果在内部则保留并加上中心偏移量,否则丢弃重试。
* 这种方法保证了用户在小区内的空间分布是严格均匀的,没有中心聚集倾向。
* 代码逻辑体现了经典的传播方程:$P_{rx} = P_{tx} cdot d^{-PLE} cdot 10^{frac{sigma}{10}}$。
* 阴影衰落是一个均值为0,标准差为
ShadowingStd 的高斯随机变量(在dB域)。