Partially MIMO Two-way Cooperative Relay Network
项目介绍
本项目是一个针对无线通信领域的仿真平台,专注于研究和分析部分MIMO(Multiple-Input Multiple-Output)双向协作中继网络。系统模拟了一个由两个源节点(终端A和终端B)以及一个协作中继节点(R)组成的三节点网络。该项目的核心在于模拟异构天线配置场景,即通信节点拥有不对称的天线数量,并通过蒙特卡洛仿真评估不同中继协议在瑞利衰落信道下的性能表现。
项目完整模拟了双向中继通信的两个关键传输阶段:
- 多址接入(MAC)阶段:两个源节点同时向中继发送信号。
- 广播(BC)阶段:中继节点对接收到的混合信号进行处理(放大或解码),然后广播转发回源节点。
功能特性
- 异构天线系统建模:支持部分MIMO配置,具体实现了源节点A(2天线)、源节点B(1天线)和中继节点R(4天线)的不对称架构。
- 双向中继协议实现:
*
放大转发(AF):基于模拟信号处理,中继对接收信号进行功率归一化放大并转发。
*
解码转发(DF):基于数字信号处理,中继利用迫零(Zero-Forcing)算法分离信号,进行解调再生后转发。
- 自干扰消除(SIC):在终端接收侧实现了自干扰消除算法,允许源节点从接收到的叠加信号中剔除自身发送的已知信号,从而提取对方的信息。
- 信道环境模拟:模拟瑞利平坦衰落信道(Rayleigh Flat Fading),包含加性高斯白噪声(AWGN)。
- 性能统计分析:通过蒙特卡洛仿真计算不同信噪比(SNR)下的误码率(BER)性能。
- 星座图采集:具备在特定信噪比下采集接收信号星座图数据的功能,用于可视化分析。
系统要求
- MATLAB R2016a 或更高版本
- Communications Toolbox(用于QAM调制与解调函数)
使用方法
- 确保MATLAB环境已按照系统要求配置。
- 设置仿真参数:在脚本的系统参数设置部分,可以调整信噪比范围(
SNR_dB_range)、蒙特卡洛迭代次数(nIter)以及调制阶数(Mod_Order)。 - 运行主脚本:直接运行入口函数,程序将依次执行AF和DF协议的仿真循环。
- 结果分析:程序运行过程中会计算误码率和信道容量统计数据(虽然绘图部分在提供的代码片段之外,但数据容器已生成)。
实现细节与算法分析
该仿真平台的核心逻辑主要包含在主函数中,以下是对各功能模块的详细技术分析:
1. 系统参数与初始化
- 天线配置:代码严格定义了 $N_A=2, N_B=1, N_R=4$ 的拓扑结构。中继天线数被设计为大于源节点天线数之和,以满足迫零检测的自由度需求。
- 统计容器:预分配了用于存储AF和DF模式下误码率、容量和中断概率的数组,优化了内存使用。
2. 信道模型构建
- 瑞利衰落:利用
randn 生成复高斯随机矩阵,并归一化功率,分别构建了 A到R ($H_A$) 和 B到R ($H_B$) 的上行链路信道。 - 信道互易性:假设系统基于时分双工(TDD)系统,因此下行链路(BC阶段)信道矩阵被设定为上行链路信道的转置($H_{RA} = H_A^T$, $H_{RB} = H_B^T$)。
3. 信号生成与MAC阶段传输
- 比特流生成:生成随机二进制比特流,长度根据调制阶数和天线数量动态计算。
- QAM调制:调用系统函数进行正交幅度调制,并强制进行平均功率归一化,确保发射功率恒定。
- 叠加传输:在中继接收端,信号被建模为 $Y_R = H_A x_A + H_B x_B + N_R$,模拟了两个源节点同时占用同一频带发送信号造成的干扰。
4. 协议一:放大转发 (AF) 实现逻辑
- 功率约束计算:计算接收混合信号的总功率,据此推导出放大因子 $beta$,确保中继发射功率满足归一化约束($P_r=1$)。
- 线性转发:中继直接将接收到的含噪信号乘以 $beta$ 进行广播。
- 自干扰消除 (SIC):
* 终端A接收到的信号包含 $x_A$ 和 $x_B$ 的混合分量。由于A已知 $x_A$,代码计算了自干扰分量 $S_{self} = H_{RA} beta H_A x_A$ 并从接收信号中减去,从而获得仅包含 $x_B$ 的处理后信号。终端B执行对称操作。
- 有效信道检测:计算端到端的等效级联信道(例如 B->R->A 的有效信道为 $H_{RA} beta H_B$),利用该等效信道矩阵进行信号检测。
5. 协议二:解码转发 (DF) 实现逻辑
* 构建虚拟MIMO信道矩阵 $H_{combined} = [H_A, H_B]$。
* 应用
迫零 (Zero-Forcing) 线性检测算法。由于 $N_R ge N_A + N_B$,计算信道矩阵的伪逆(Pinverse)来分离 $x_A$ 和 $x_B$。
* 执行硬判决:先解调为比特,再重新调制生成纯净的信号 $x_{A, regen}$ 和 $x_{B, regen}$,从而消除了上行链路噪声。
* 代码虽然在注释中探讨了零空间波束成形,但在实际执行逻辑中采用了一种
空间映射策略。
* 利用中继的多天线优势,将再生的 $x_A$ 信号映射到中继的一部分天线(例如前 $N_A$ 根),将 $x_B$ 信号映射到另一部分天线(后 $N_B$ 根)。
* 这种空间复用/天线分配策略避免了复杂的预编码计算,同时利用了空间自由度来传输两路数据流。
* (注:代码实际执行逻辑显示了将再生信号叠加到特定的天线端口上,这与通过简单的加法叠加不同,更接近于天线选择或端口映射发射。)
6. 信号检测
- 代码调用了一个名为
mimo_detect 的自定义函数(虽未显示其内部实现,但从下文调用方式可知),传入处理后的接收信号、有效信道矩阵和调制阶数,输出检测后的符号索引或比特流。这通常包含了均衡(如MMSE或ZF)和星座点判决过程。