文档

turboencoder系统对象

采用并行级联编码方案对输入信号进行编码

描述

涡轮编码器系统对象™使用并行级联编码方案对二进制输入信号进行编码。该编码方案使用两个相同的卷积编码器,并在编码数据位的末尾追加终止位。

使用turbo编码方案对输入信号进行编码:

  1. 定义和设置您的涡轮编码器对象。看到建设

  2. 调用一步的性质对二进制信号进行编码comm.TurboEncoder.的行为一步特定于工具箱中的每个对象。

请注意

从R2016b开始,而不是使用一步方法来执行System对象定义的操作,您可以调用带有参数的对象,就像调用函数一样。例如,Y = step(obj,x)而且Y = obj(x)执行等效操作。

建设

H= comm.TurboEncoder创建一个System对象,H它使用涡轮编码器对二进制数据进行编码。

H= comm.TurboEncoder (的名字价值创建一个涡轮编码器对象,H,并将指定的属性名称设置为指定的值。的名字必须出现在单引号内('').可以以任意顺序指定多个名值对参数Name1, Value1,…,的家

H= comm.TurboEncoder(TRELLIS, INTERLVRINDICES)创建一个涡轮编码器对象,H.在这种结构中,TrellisStructure属性设置为格子,以及InterleaverIndices属性设置为INTERLVRINDICES

属性

TrellisStructure

构成卷积码的格状结构

将网格指定为MATLAB结构,其中包含构成卷积代码的网格描述。使用istrellis函数检查结构是否是有效的格状结构。的结果Poly2trellis (4, [13 15], 13)

InterleaverIndicesSource

交织指标的来源

将交织器索引的源指定为之一财产|输入端口.当您将此属性设置为输入端口,该对象使用指定为step方法输入的交织器索引。当您将此属性设置为财产方法中指定的交织器索引InterleaverIndices财产。当您将此属性设置为输入端口,该对象处理可变大小的信号。

默认值:财产

InterleaverIndices

分界指标

指定用于将编码器上的输入位排列为整数列向量的映射。这个映射是一个向量,其元素数量等于步进法输入的长度。每个元素必须是1和之间的整数l,没有重复的值。

默认值:(64: 1:1)。

方法

一步 采用并行级联编码方案对输入信号进行编码
通用于所有系统对象
释放

允许系统对象属性值更改

例子

全部展开

使用turbo编码和解码在AWGN信道上模拟BPSK数据的传输和接收。

设置Eb/No (dB)和帧长参数。将随机数生成器设置为默认状态,以确保结果是可重复的。

EbNo = 6;frmLen = 256;rng默认的

根据Eb/No比计算噪声方差。生成随机交错索引。

noiseVar = 10^(-EbNo/10);intrlvrIndices = randperm(frmLen);

使用给出的网格结构创建一个turbo编码器和解码器对Poly2trellis (4,[13 15 17],13)而且intrlvrIndices

hTEnc = comm.TurboEncoder(“TrellisStructure”poly2trellis (4...[13 15 17],13),“InterleaverIndices”, intrlvrIndices);hTDec = com . turbodecoder (“TrellisStructure”poly2trellis (4...[13 15 17],13),“InterleaverIndices”intrlvrIndices,...“NumIterations”4);

创建一个BPSK调制器和解调器对,其中解调器输出由对数似然比法确定的软位。

hMod = com . bpskmodulator;hDemod = comm. bpskdemoator (“DecisionMethod”的“对数似然比...“方差”, noiseVar);

创建AWGN通道对象和错误率对象。

hChan = com . awgnchannel (“EbNo”, EbNo);error = comm.ErrorRate;

主处理循环执行以下步骤:

  • 生成二进制数据

  • 涡轮编码数据

  • 调制编码的数据

  • 将调制信号通过AWGN通道传递

  • 用LLR对噪声信号进行解调,输出软位

  • Turbo解码解调后的数据。因为来自解调器的位映射与涡轮解码器所期望的相反,解码器输入必须使用解调信号的逆。

  • 计算错误统计信息

frmIdx = 1:100 data = randi([0 1],frmLen,1);encodedData = step(hTEnc,data);modSignal = step(hMod,encodedData);receivedSignal = step(hChan,modSignal);demodSignal = step(hDemod,receivedSignal);receivedBits = step(hTDec,-demodSignal);errorStats = step(error,data,receivedBits);结束

显示错误数据。

流('误码率= %5.2e\n错误数= %d\n总比特= %d\n'...errorStats)
误码率= 2.34e-04错误数= 6总比特数= 25600

在AWGN信道中使用turbo码模拟使用16-QAM的端到端通信链路。帧大小从{500,1000,1500}中随机选择。由于帧大小不同,请将交织器索引提供给涡轮编码器和解码器对象,作为其相关对象的输入一步功能。

设置调制顺序和Eb/No (dB)参数。将随机数生成器设置为默认状态,以便能够重复结果。

M = 16;EbNo = 2;rng默认的

根据Eb/No比和调制顺序计算噪声方差。

noiseVar = 10^(-EbNo/10)*(1/log2(M));

方法的输入参数提供交织器索引,并创建一个turbo编码器和解码器对一步函数。

hTEnc = comm.TurboEncoder(“InterleaverIndicesSource”输入端口的);hTDec = com . turbodecoder (“InterleaverIndicesSource”输入端口的...“NumIterations”4);

创建一个16-QAM调制器和解调器对,其中解调器输出由对数似然比法确定的软位。调制器和解调器对象被归一化使用平均功率为1 W。

hMod = comm.RectangularQAMModulator(“ModulationOrder”米,...“BitInput”,真的,...“NormalizationMethod”的平均功率);hDemod = comm. rectangularqamdemo解调器(“ModulationOrder”米,...“BitOutput”,真的,...“NormalizationMethod”的平均功率...“DecisionMethod”的“对数似然比...“方差”, noiseVar);

创建AWGN通道对象和错误率对象。

hChan = com . awgnchannel (“EbNo”EbNo,“BitsPerSymbol”log2 (M));error = comm.ErrorRate;

处理循环执行以下步骤:

  • 选择一个随机的帧大小并生成交织索引

  • 生成随机二进制数据

  • 涡轮编码数据

  • 应用16-QAM调制

  • 将调制信号通过AWGN通道传递

  • 用LLR算法对噪声信号进行解调

  • Turbo解码数据

  • 计算错误统计信息

frmIdx = 1:100随机选择三种可能的帧大小之一frmLen = 500*randi([1 3],1,1);确定给定帧长度的交织器索引intrlvrIndices = randperm(frmLen);生成随机二进制数据data = randi([0 1],frmLen,1);% Turbo编码数据encodedData = step(hTEnc,data,intrlvrIndices);调制编码的数据modSignal = step(hMod,encodedData);通过AWGN通道发送信号。receivedSignal = step(hChan,modSignal);解调接收到的信号demodSignal = step(hDemod,receivedSignal);% Turbo解码解调信号。因为位映射从%的解调器与turbo解码器所期望的相反解码器输入必须使用解调信号的逆。receivedBits = step(hTDec,-demodSignal,intrlvrIndices);%计算错误统计errorStats = step(error,data,receivedBits);结束

显示错误统计信息。

流('误码率= %5.2e\n错误数= %d\n总比特= %d\n'...errorStats)
误码率= 3.51e-04错误数= 33总比特数= 94000

算法

类中描述的算法、输入和输出涡轮编码器阻塞引用页面。对象属性对应于块参数。

扩展功能

在R2012a中介绍

这个话题有帮助吗?