SOVADEC软输入软输出维特比解码器实现
项目介绍
SOVADEC是一个基于软输入软输出维特比算法(SISO Viterbi)的高效信道解码器实现。本项目专门设计用于卷积码的解码任务,通过利用先验软信息(对数似然比)进行精确的前向和后向递归计算,在滑动窗口机制下实现高效的概率解码。该解码器特别适用于迭代解码系统,可作为Turbo码和LDPC码的重要组成部分,有效提升通信系统的误码性能。
功能特性
- 软输入软输出处理:支持软信息(对数似然比)的输入和输出,适配迭代解码需求
- 滑动窗口机制:采用可配置的窗口大小参数,平衡解码性能与计算复杂度
- 对数域计算:所有概率计算均在对数域执行,避免数值下溢问题
- 高效路径管理:优化的路径度量管理策略,确保解码准确性和实时性
- 网格结构适配:支持多种卷积码配置,通过网格结构参数灵活定义编码特性
使用方法
输入参数
- MSG:待解码的软信息输入序列(实数矩阵),表示接收符号的对数似然比(LLR)值
- LLR:先验概率的软信息输入(实数向量),提供每个比特的初始置信度
- TRELLIS:网格结构描述对象,包含卷积码的约束长度、生成多项式等编码参数
- WIN:滑动窗口大小参数(整数),控制解码器的记忆深度和计算复杂度
输出结果
- DEC:解码输出结果(实数向量),返回与输入MSG相同长度的软输出序列,表示解码后每个比特的对数后验概率比(APP LLR)
调用示例
% 定义网格结构
trellis = poly2trellis(3, [7 5]);
% 设置输入参数
msg = randn(100, 1); % 待解码软信息序列
llr = zeros(100, 1); % 先验软信息
win = 32; % 滑动窗口大小
% 执行解码
dec = sovadec(msg, llr, trellis, win);
系统要求
- MATLAB R2018b或更高版本
- 支持MATLAB基础运行环境
- 推荐内存:4GB以上(根据处理数据规模调整)
文件说明
主程序文件实现了完整的软输入软输出维特比解码流程,包括网格结构解析、前向度量递归计算、后向度量递归处理、对数似然比合成以及滑动窗口管理等核心功能。该文件通过模块化设计整合了算法各关键环节,确保解码器能够高效处理卷积码的软判决解码任务,并输出精确的后验概率信息供后续处理使用。