通信算法之十二:Turbo编码与译码仿真链路

一. Turbo编码与译码原理

Turbo编码器是:并行级联卷积编码(PCCC,Parallel Concatenated ConvolutionalCode),它使用了两个8状态子编码器和一个Turbo码内交织器。Turbo编码器的码率为1/3。

二. 仿真链路:

信道环境:高斯白噪声

仿真参数:R =1/3 ,  约束长度=9,MAP交织器为:LTE交织器

仿真结果:LTE标准Turbo编码译码,仿真增益为:13dB。(12.6 - (-0.9 )= 13.5dB )

仿真平台:matlab

信道环境:高斯白噪声

信噪比SNR : -1.4:0.1:-0.6

仿真链路:源比特+Turbo编码+QPSK调制+AWGN+QPSK解调+Turbo译码+BER

仿真验证架构:

误码率曲线:

三.  MATLAB仿真代码

%****************************************************************

% 内容概述:Turbo编码与Turbo译码链路,符合LTE标准,仿真增益:13dB,R=1/3

% 仿真链路:源比特-->Turbo编码-->QPSK调制-->高斯白噪声信道-->

%           QPSK解调-->Turbo译码-->BER

% 创 建 人:

% 创建时间:2013年11月21日

% 参考文献:网络资料

% 版权声明:不可随意复制、不可随意传播。

%****************************************************************

clc;

clear all;

close all;

%系统参数设计------------------------------

TurboIter = 8;%Turbo迭代次数

SourceBitlen = 5184;%输入源比特长度

SNR = -1.4:0.1:-0.6;%信噪比序列

BerEbNo = zeros(1,length(SNR));

for nEN=1:length(SNR)

Err_counter = 0;

for nframe=1:10000

%输入源比特序列基带信号--------------------

SourceBit = round(rand(1,SourceBitlen));

%Turbo编码--------------------------------

TurboInterTable = load TurboInterTable.mat

for k=1:5

if TurboInterTable(k,1)>=SourceBitlen

break;

end

end

RefLen = TurboInterTable(k,1);

F1 = TurboInterTable(k,2);

F2 = TurboInterTable(k,3);

%Turbo编码-

Turbo_out = TurboEncode(SourceBit,SourceBitlen,RefLen,F1,F2);

%QPSK调制---------------------------------

Turbo_out2 = QpskMod(Turbo_out);

%高斯白噪声信道----------------------

soft_in = Channel(Turbo_out2,SNR(nEN));

%QPSK解调---------------------------

soft_in1 = QpskDemod(soft_in);

%Turbo译码--LTE----------------

[hard_out,soft_out] = TurboDecode(soft_in1,TurboIter,RefLen,F1,F2);

%误码率-----------------------------

errs = length(find(hard_out(1:SourceBitlen) ~= SourceBit));

Err_counter = Err_counter + errs;

Ber = Err_counter/nframe/SourceBitlen;

end

BerEbNo(nEN) = Ber;

fprintf(‘EcNo:%1.3fdB,误码率:%9.5e,\n‘,SNR(nEN),Ber);

end

grid on;

semilogy(SNR,BerEbNo,‘b-v‘);

xlabel(‘Ec/No[dB]‘);

ylabel(‘Bit Error Rate‘);

title(‘Turbo性能仿真误码率曲线‘);

【详细资料,及相应MATLAB代码,咨询qq:1279682290】

时间: 2024-12-21 10:34:24

通信算法之十二:Turbo编码与译码仿真链路的相关文章

每日算法之四十二:Permutation Sequence (顺序排列第k个序列)

The set [1,2,3,-,n] contains a total of n! unique permutations. By listing and labeling all of the permutations in order, We get the following sequence (ie, for n = 3): "123" "132" "213" "231" "312" "

通信算法之五:五种编码方式增益比较及matlab仿真验证

1. 卷积码增益性能.误码率 信道环境:AWGN 信噪比SNR :0:0.1:6 MATALB仿真架构:源比特 +卷积码 +BPSK +AWGN +Viterbi +BER 说明:卷积编码,不同的R码率,不同的约束长度 2. Turbo增益性能.误码率 信道环境:AWGN 信噪比SNR :-1:0.1:2 MATALB仿真架构:源比特 +Turbo编码 +BPSK +AWGN +Turbo译码+BER 说明:turbo译码,不同的译码算法那,不同的交织长度,不同的迭代次数. LTE 标准的tur

通信算法之十五:WIFI-802.11a,b,g,n协议物理层仿真

一. 802.11协议-WIFI-对比 二. 802.11n物理层技术 OFDM-MIMO 三. MIMO技术 四.工程实践 802.11a,b,g,n,物理层基带matlab仿真已经完成,性能优异 DSP工程实践了 五.如需要协议相应的物理层仿真代码,matlab仿真链路代码,及DSP之C语言程序,请联系QQ:1279682290

通信算法之十四:GMSK调制与解调仿真链路,DSP软件无线电实现

一. GMSK调制信号产生,软件无线电DSP实现流程 二. GMSK解调,一比特差分解调,DSP实现流程 三. 基于软件无线电的架构思路,已经DSP实现和优化,符合工程项目 四.参考文献 <GSM通信系统GMSK的DSP实现> <GMSK调制解调及其TMS320C6xxxDSP实现> 五.如需要工程项目,GMSK调制与解调的,matlab仿真链路代码,及DSP之C语言程序,请联系QQ:1279682290

开发h5斗地主大厅算法——第十二章の主动出牌(1)

本章开始,我们介绍主动出牌的算法,和被动出牌类似,我们第一步把主要架子搭起来. 首先清空出牌序列 [cpp] view plain copy clsHandCardData.ClearPutCardList(); 主动出牌的策略按照优先级大体可以分为三类: [一]能直接一手牌出去,优先出. [二]两手牌出去且有绝对大牌,先出绝对大牌. [三]出一手牌使得接下来自己手牌价值最大化. [cpp] view plain copy //剪枝:如果能出去最后一手牌直接出 CardGroupData Sur

Java数据结构和算法(十二)——2-3-4树

通过前面的介绍,我们知道在二叉树中,每个节点只有一个数据项,最多有两个子节点.如果允许每个节点可以有更多的数据项和更多的子节点,就是多叉树.本篇博客我们将介绍的——2-3-4树,它是一种多叉树,它的每个节点最多有四个子节点和三个数据项. 1.2-3-4 树介绍 2-3-4树每个节点最多有四个字节点和三个数据项,名字中 2,3,4 的数字含义是指一个节点可能含有的子节点的个数.对于非叶节点有三种可能的情况: ①.有一个数据项的节点总是有两个子节点: ②.有二个数据项的节点总是有三个子节点: ③.有

泛型算法(十二)之交换算法

1.iter_swap(ForwardIterator1 a, ForwardIterator2 b):交换两个迭代器所指的元素对象 std::vector<int> c; //向c中添加元素 for (int i = 0; i < 10; i++) { c.push_back(i); } //交换c中首尾元素 std::iter_swap(c.begin(), c.end() - 1); for (auto var : c) { std::cout << var<&l

每日算法之二十二:Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head. For example, Given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may not modify the values in the list, on

[算法系列之二十四]后缀树(Suffix Tree)

之前有篇文章([算法系列之二十]字典树(Trie))我们详细的介绍了字典树.有了这些基础我们就能更好的理解后缀树了. 一 引言 模式匹配问题 给定一个文本text[0-n-1], 和一个模式串 pattern[0-m-1],写一个函数 search(char pattern[], char text[]), 打印出pattern在text中出现的所有位置(n > m). 这个问题已经有两个经典的算法:KMP算法 ,有限自动机,前者是对模式串pattern做预处理,后者是对待查证文本text做预处