软输入软输出维特比解码算法实现(SOVADEC)
项目介绍
本项目实现了基于软输入软输出的维特比解码算法(SOVA),专为通信系统中的卷积码解码设计。算法支持接收软判决信号并输出可靠性信息,特别适用于需要迭代解码的系统(如Turbo码)。通过引入滑动窗口处理机制,有效降低了长序列解码时的存储需求,实现了性能与资源消耗的平衡。
功能特性
- 软判决处理:直接处理实数软判决输入序列,充分利用信号幅度信息
- 可靠性传播:基于对数似然比(LLR)计算,输出每个解码比特的可靠性度量
- 滑动窗口机制:采用窗格处理方式,大幅减少内存占用,支持长序列高效解码
- 迭代解码友好:输出的软信息可直接用于Turbo码等迭代解码系统的下一次迭代
- 参数可配置:支持自定义网格结构和窗口大小,适应不同编码方案
使用方法
输入参数
- MSG:待解码的软判决输入序列(实数数组,长度需与编码帧匹配)
- LLR:初始对数似然比信息(实数数组,用于软输入初始化)
- TRELLIS:MATLAB trellis结构体(定义卷积码的约束长度、生成多项式等参数)
- WIN:正整数,指定滑动窗口大小(影响解码延迟和内存使用)
调用示例
% 定义卷积码网格结构
trellis = poly2trellis(3, [7 5]);
% 设置输入参数
msg = randn(1, 100); % 生成软判决输入序列
llr = zeros(1, 100); % 初始化LLR
win_size = 32; % 设置窗口大小
% 调用SOVA解码器
decoded_output = sovadec(msg, llr, trellis, win_size);
系统要求
- MATLAB R2016b或更高版本
- 支持MATLAB trellis结构体的通信工具箱
文件说明
主程序文件实现了完整的SOVA解码流程,包含软判决度量的初始化、窗格化的网格路径处理、路径度量的递归更新与比较、幸存路径的选择与存储、以及对数似然比可靠性的反向传播计算。通过滑动窗口机制控制解码深度,在保证性能的同时优化内存使用效率。