function [soft_value, extern_value] = max_log_map(input, apri)
%% ===========状态转移图开始===========
... S(i) 0-S(i+1)/b(i)b(i+1) 1-S(i+1)/b(i)b(i+1)
... 1 1/00 5/11
... 2 5/00 1/11
... 3 6/01 2/10
... 4 2/01 6/10
... 5 3/01 7/10
... 6 7/01 3/10
... 7 8/00 4/11
... 8 4/00 8/11
... ===========状态转移图结束===========
%% 初始化
len = length(input);
infty = 128;
state = 2 ^ 3;
soft_value = zeros(1, len);
next_state = [1 5 6 2 3 7 8 4;...
5 1 2 6 7 3 4 8];
last_state = [1 4 5 8 2 3 6 7;...
2 3 6 7 1 4 5 8];
%初始化软信息
x = input(1, :);
y = input(2, :);
%初始化alpha、beta和gamma
alpha = - infty * ones(state, len);
alpha(1, 1) = 0;
beta = - infty * ones(state, len + 1);
beta(1, len + 1) = 0;
gamma = zeros(state, 2, len);
gamma([3, 4, 5, 6], 1, :) = repmat(y, 4, 1);
gamma([3, 4, 5, 6], 2, :) = repmat(x + apri, 4, 1);
gamma([1, 2, 7, 8], 2, :) = repmat(x + y + apri, 4, 1);
% gamma(1, 1, :) = 0;
% gamma(1, 2, :) = x + y + apri;
% gamma(2, 1, :) = 0;
% gamma(2, 2, :) = x + y + apri;
% gamma(3, 1, :) = y;
% gamma(3, 2, :) = x + apri;
% gamma(4, 1, :) = y;
% gamma(4, 2, :) = x + apri;
% gamma(5, 1, :) = y;
% gamma(5, 2, :) = x + apri;
% gamma(6, 1, :) = y;
% gamma(6, 2, :) = x + apri;
% gamma(7, 1, :) = 0;
% gamma(7, 2, :) = x + y + apri;
% gamma(8, 1, :) = 0;
% gamma(8, 2, :) = x + y + apri;
%% 计算分支度量alpha
for k = 2 : len
alpha(:, k) = max(squeeze(gamma(last_state(1, :), 1, k - 1)) + alpha(last_state(1, :), k - 1), ...
squeeze(gamma(last_state(2, :), 2, k - 1)) + alpha(last_state(2, :), k - 1));
% alpha(1, k) = max(gamma(1, 1, k - 1) + alpha(1, k - 1), gamma(2, 2, k - 1) + alpha(2, k - 1));
% alpha(2, k) = max(gamma(4, 1, k - 1) + alpha(4, k - 1), gamma(3, 2, k - 1) + alpha(3, k - 1));
% alpha(3, k) = max(gamma(5, 1, k - 1) + alpha(5, k - 1), gamma(6, 2, k - 1) + alpha(6, k - 1));
% alpha(4, k) = max(gamma(8, 1, k - 1) + alpha(8, k - 1), gamma(7, 2, k - 1) + alpha(7, k - 1));
% alpha(5, k) = max(gamma(2, 1, k - 1) + alpha(2, k - 1), gamma(1, 2, k - 1) + alpha(1, k - 1));
% alpha(6, k) = max(gamma(3, 1, k - 1) + alpha(3, k - 1), gamma(4, 2, k - 1) + alpha(4, k - 1));
% alpha(7, k) = max(gamma(6, 1, k - 1) + alpha(6, k - 1), gamma(5, 2, k - 1) + alpha(5, k - 1));
% alpha(8, k) = max(gamma(7, 1, k - 1) + alpha(7, k - 1), gamma(8, 2, k - 1) + alpha(8, k - 1));
end
%% 计算分支度量beta和LLR
for k = len : -1 : 1
beta(:, k) = max(squeeze(gamma(:, 1, k)) + beta(next_state(1, :), k + 1), ...
squeeze(gamma(:, 2, k)) + beta(next_state(2, :), k + 1));
soft_value(k) = max(alpha(:, k) + squeeze(gamma(:, 2, k)) + beta(next_state(2, :), k + 1)) - ...
max(alpha(:, k) + squeeze(gamma(:, 1, k)) + beta(next_state(1, :), k + 1)) ;
% beta(1, k) = max(gamma(1, 1, k) + beta(1, k + 1), gamma(1, 2, k) + beta(5, k + 1));
% beta(2, k) = max(gamma(2, 1, k) + beta(5, k + 1), gamma(2, 2, k) + beta(1, k + 1));
% beta(3, k) = max(gamma(3, 1, k) + beta(6, k + 1), gamma(3, 2, k) + beta(2, k + 1));
% beta(4, k) = max(gamma(4, 1, k) + beta(2, k + 1), gamma(4, 2, k) + beta(6, k + 1));
% beta(5, k) = max(gamma(5, 1, k) + beta(3, k + 1), gamma(5, 2, k) + beta(7, k + 1));
% beta(6, k) = max(gamma(6, 1, k) + beta(7, k + 1), gamma(6, 2, k) + beta(3, k + 1));
% beta(7, k) = max(gamma(7, 1, k) + beta(8, k + 1), gamma(7, 2, k) + beta(4, k + 1));
% beta(8, k) = max(gamma(8, 1, k) + beta(4, k + 1), gamma(8, 2, k) + beta(8, k + 1));
%
% store1 = max([alpha(1, k) + gamma(1, 2, k) + beta(5, k + 1), alpha(2, k) + gamma(2, 2, k) + beta(1, k + 1) ...
% alpha(3, k) + gamma(3, 2, k) + beta(2, k + 1), alpha(4, k) + gamma(4, 2, k) + beta(6, k + 1) ...
% alpha(5, k) + gamma(5, 2, k) + beta(7, k + 1), alpha(6, k) + gamma(6, 2, k) + beta(3, k + 1) ...
% alpha(7, k) + gamma(7, 2, k) + beta(4, k + 1), alpha(8, k) + gamma(8, 2, k) + beta(8, k + 1)]);
% store0 = max([alpha(1, k) + gamma(1, 1, k) + beta(1, k + 1), alpha(2, k) + gamma(2, 1, k) + beta(5, k + 1) ...
% alpha(3, k) + gamma(3, 1, k) + beta(6, k + 1), alpha(4, k) + gamma(4, 1, k) + beta(2, k + 1) ...
% alpha(5, k) + gamma(5, 1, k) + beta(3, k + 1), alpha(6, k) + gamma(6, 1, k) + beta(7, k + 1) ...
% alpha(7, k) + gamma(7, 1, k) + beta(8, k + 1), alpha(8, k) + gamma(8, 1, k) + beta(4, k + 1)]);
% soft_value(k) = store1 - store0;
end
extern_value = soft_value - x - apri;
MY_Turbo.rar_turbo_turbo码_turbo码仿真
版权申诉
106 浏览量
2022-07-15
11:41:41
上传
评论
收藏 26KB RAR 举报
小贝德罗
- 粉丝: 70
- 资源: 1万+
最新资源
- mobilenet模型-基于图像分类算法对农作物病害部位识别-不含数据集图片-含逐行注释和说明文档.zip
- 【资源免费分享】MP4文件自动分轨工具(内附使用录像介绍)
- densenet模型-基于人工智能的卷积网络训练识别人行为-不含数据集图片-含逐行注释和说明文档.zip
- JMeter使用教程.md
- densenet模型-基于卷积神经网络识别火龙果是否腐烂-不含数据集图片-含逐行注释和说明文档.zip
- alexnet模型-python语言pytorch框架训练识别蚁类-不含数据集图片-含逐行注释和说明文档.zip
- 关系数据库设计-MFC框架银行ATM自助存取款机模拟程序
- resnet模型-python训练识别水上运动分类-不含数据集图片-含逐行注释和说明文档.zip
- OTA一键打包脚本(shell)
- 餐桌数据集6337张VOC+YOLO格式.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈