基于MATLAB的协作通信功率控制与误码率仿真
项目介绍
本项目是一个用于无线通信系统研究的仿真平台,专注于分析协作通信中的功率分配策略对系统性能的影响。通过构建源节点(Source)、中继节点(Relay)和目的节点(Destination)的三端网络,模拟了在瑞利衰落信道下的信号传输过程。
项目核心旨在通过蒙特卡洛仿真,对比“直连传输”与“协作通信(解码转发协议)”的误码率(BER)性能,并重点探究在总功率受限的情况下,如何在源节点与中继节点之间进行最优功率分配(Power Allocation),以实现系统可靠性的最大化。
功能特性
- 基础通信链路模拟:实现了随机二进制数据生成、BPSK调制、瑞利衰落信道建模及加性高斯白噪声(AWGN)的添加。
- 双场景对比分析:
*
直连传输(Direct Transmission):作为基准性能,模拟信号直接从源发送至目的节点。
*
协作通信(Cooperative Communication):采用解码转发(Decode-and-Forward, DF)协议,引入中继节点辅助传输。
- 灵活的功率控制:支持通过功率分配因子 $alpha$ 动态调整源发送功率($P_s$)与中继发送功率($P_r$)的比例,满足 $P_s + P_r = P_{total}$ 的约束。
- 信号处理算法:
* 接收端采用迫零均衡(Zero-Forcing Equalization)恢复信号。
* 中继节点执行硬判决解码与重调制。
* 目的节点采用基于信噪比权重的加权合并策略(类最大比合并 MRC)。
- 多维数据可视化:自动生成BER随SNR变化的曲线图、BER随功率分配因子变化的切片图,以及三维性能曲面图。
系统要求
- MATLAB R2016a 或更高版本(代码仅使用基础数学函数,不严格依赖特定工具箱,但建议安装Communication Toolbox以备扩展)。
- 足够的内存以支持蒙特卡洛仿真的大规模矩阵运算(默认仿真比特数为 100,000)。
使用方法
- 将代码保存为
main.m 文件。 - 在MATLAB的命令窗口中直接输入
main 并回车,或在编辑器中点击“运行”按钮。 - 程序将自动执行以下步骤:
* 初始化参数并清理工作区。
* 进入蒙特卡洛循环,遍历设定的信噪比范围(0-20dB)。
* 计算并输出仿真日志。
* 仿真结束后,自动弹出三个图形窗口展示分析结果。
代码实现逻辑与算法详解
本仿真代码完全包含在一个主函数中,其内部处理逻辑严格按照通信系统流图执行:
1. 参数配置与初始化
系统设定了总传输比特数(
TotalBits)用于保证统计意义,定义了信噪比扫描范围(
SNR_dB_Range)以及功率分配因子范围(
Alpha_Range)。总发射功率归一化为1。预分配了用于存储BER数据的矩阵,以优化运行速度。
2. 信号源与信道建模
- 信号生成:生成0和1的随机整数序列,通过公式 $2 times text{Bits} - 1$ 映射为BPSK信号(-1, +1)。
- 信道模型:构建平坦瑞利衰落信道。信道系数($h_{sd}, h_{sr}, h_{rd}$)由复高斯随机变量生成(实部虚部均服从高斯分布),并归一化功率。
- 噪声生成:根据当前循环的SNR计算噪声方差 $N_0$,生成复高斯白噪声添加到信号中。
3. 场景一:直连传输(基准)
在该模式下,假设由于没有中继协助,源节点使用全部总功率进行发送。接收端接收到信号后:
- 执行迫零均衡:将接收信号除以已知信道系数 $h_{sd}$。
- 执行硬判决:判断实部大于0则判为1,否则为0。
- 计算误码率并记录为基准值。
4. 场景二:协作通信(解码转发 DF)
该模块内嵌于SNR循环中,还需要遍历功率分配因子 $alpha$:
- 功率分配:源功率 $P_s = alpha times P_{total}$,中继功率 $P_r = (1-alpha) times P_{total}$。
- 阶段一(广播):源节点发送信号,由于功率被分割,信号幅度缩放为 $sqrt{P_s}$。目的节点和中继节点同时接收。
- 中继处理:
* 中继节点对接收信号进行迫零均衡。
*
硬判决解码:中继对信号进行判决恢复出二进制数据(注意:此处模拟简单的DF协议,未加入CRC校验,即中继可能转发错误信息)。
*
重调制:将判决后的比特重新映射为BPSK符号。
- 阶段二(转发):中继节点使用功率 $P_r$ 发送重构后的信号至目的节点。
- 目的节点合并与检测:
* 分别对“源-目的”链路和“中继-目的”链路进行迫零均衡。
* 计算加权系数 $w$,权重与信道功率增益成正比,与噪声功率成反比($w = |h|^2 / N_0$)。
* 执行加权合并:$Metric = w_{sd} times r_{sd_eq} + w_{rd} times r_{rd_eq}$。
* 对合并后的统计量进行硬判决,并计算误码率。
5. 结果可视化
代码最后部分利用绘图函数生成三张图表:
- Figure 1 (BER vs SNR):展示直连传输与几种典型功率分配(如0.1, 0.5, 0.9)下的协作传输BER曲线对比,验证分集增益。
- Figure 2 (BER vs Alpha):选取特定的SNR(如10dB),绘制BER随源功率占比 $alpha$ 的变化曲线,并在图中标注出使BER最低的最优 $alpha$ 值。
- Figure 3 (3D Surface):通过
surf 函数绘制三维曲面,X轴为SNR,Y轴为功率分配因子,Z轴为BER(取对数),直观展示三个变量间的非线性关系。