文档

viterbidecoder系统对象

使用维特比算法解码卷积编码数据

描述

ViterbiDecoder对象解码输入符号以生成二进制输出符号。该对象可以一次处理多个符号以获得更快的性能。该对象处理可变大小的信号;然而,可变大小的信号不能应用于擦除输入。

解码输入符号并产生二进制输出符号:

  1. 定义并设置Viterbi解码器对象。看到建设

  2. 调用一步的性质来解码输入符号comm.ViterbiDecoder.的行为一步特定于工具箱中的每个对象。

请注意

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

建设

H = com . viterbidecoder创建一个Viterbi解码器系统对象,H.该对象使用Viterbi算法解码卷积编码的输入数据。

H = com . viterbidecoder (的名字,价值创建一个维特比解码器对象,H,每个指定的属性设置为指定的值。可以以任意顺序指定附加的名称-值对参数,如(Name1,Value1、……,).

H = com . viterbidecoder (TRELLIS,的名字,价值创建一个维特比解码器对象,H.该对象具有TrellisStructure属性设置为格子并将其他指定的属性设置为指定的值。

属性

TrellisStructure

卷积代码的网格结构

将网格指定为MATLAB®结构,该结构包含卷积代码的网格描述。的结果poly2trellis(7, [171 133]).使用istrellis函数验证结构是否是有效的格。

InputFormat

输入格式

将解码器输入的格式指定为Unquantized||.默认为Unquantized

当您将此属性设置为Unquantized,则输入必须是双精度或单精度软值的实向量,这些软值未量化。对象认为负数是1S和正数0年代。

当您将此属性设置为,则输入必须是硬决策值的向量,即0年代或1s.输入的数据类型可以是双精度、单精度、逻辑、8-、16-和32位有符号整数。还可以使用8-、16-和32位无符号整数。

当您将此属性设置为,输入需要一个量化软值的向量,表示为0和之间的整数.输入的数据类型可以是双精度、单精度、逻辑、8-、16-和32位有符号整数。还可以使用8-、16-和32位无符号整数。方法中指定的字长度等于字长度的无符号和无缩放的不动点对象(fi)SoftInputWordLength财产。对象认为负数是0S和正数1年代。

SoftInputWordLength

软输入字长

指定将每个量化软输入值表示为正整数标量值的位数。默认为4位。属性时应用此属性InputFormat财产

InvalidQuantizedInputAction

当输入值超出范围时,操作

指定当输入值超出范围时对象所采取的操作忽略|错误.默认为忽略.将此属性设置为错误因此,当量化的输入值超出范围时,对象会产生一个错误。属性时应用此属性InputFormat财产

TracebackDepth

回溯深度

指定网格分支的数量,以将每个回溯路径构造为数值整数标量值。默认为34.回溯深度影响解码的精度和时延。在输出中第一个已解码符号之前的零符号的数目表示解码延迟。

当你设置TerminationMethod财产连续时,解码延时为TracebackDepth零符号或TracebackDepth × K零比特表示速率K/N卷积码。

当你设置TerminationMethod财产截断终止时,无输出延迟。在这种情况下,TracebackDepth必须小于或等于每个输入中的符号数。

作为一般的估计,典型的TracebackDepth房产价值大约是其两到三倍k- 1)/(1 -r,在那里k代码的限制长度和r编码速率[1].例如:

  • 速度1/2代码有一个TracebackDepth5(k- 1)

  • 速度2/3代码有一个TracebackDepth7.5 (k- 1)

  • 速度3/4代码有一个TracebackDepth10 (k- 1)

  • 速度5/6代码有一个TracebackDepth15 (k- 1)

TerminationMethod

编码帧的终止方法

指定终止方法为连续|截断|终止.默认为连续

连续模式下,对象在每一帧结束时保存内部状态度量值,以便下一帧使用。对象独立地处理每个回溯路径。

截断模式下,对象独立处理每一帧。回溯路径从具有最佳度量的状态开始,总是以全零状态结束。在终止模式下,对象独立处理每一帧,并且回溯路径总是以全零状态开始和结束。

ResetInputPort

启用解码器复位输入

将此属性设置为true以启用附加的一步输入方法。默认为.当重置输入为非零值时,该对象将解码器的内部状态重置为初始条件。属性时应用此属性TerminationMethod财产连续

DelayedResetAction

通过端口非零输入复位

将此属性设置为true以延迟重置对象输出。默认值为false。当将此属性设置为true时,在对象计算已解码数据之后,解码器的内部状态将被重置。当将此属性设置为false时,在对象计算已解码数据之前,解码器的内部状态将被重置。属性时应用此属性ResetInputPort属性为true。

PuncturePatternSource

穿刺图案的来源

指定穿刺图案的来源为没有一个|财产.默认为没有一个

当您将此属性设置为没有一个,物体假设没有穿孔。将此属性设置为财产方法指定的穿孔模式向量来解码穿孔码字PuncturePattern财产。

PuncturePattern

穿刺模式向量

指定穿刺模式以穿刺编码数据。默认为(1;1;0;1;0;1].穿刺图案是的列向量1年代和0年代。0S表示插入虚拟位的位置。穿刺模式必须与编码器使用的穿刺模式相匹配。属性时应用此属性PuncturePatternSource财产财产

ErasuresInputPort

启用擦除输入

将此属性设置为真正的指定擦除向量为一步输入方法。默认为.擦除输入必须是双精度或逻辑二进制列向量。这个向量表示要删除输入码字的哪些符号。的值1指示擦除的位。解码器不会为传入数据流中的擦除更新分支度量。

的长度一步方法清除输入和一步方法数据输入必须相同。当您将此属性设置为,该对象假定没有擦除。

OutputDataType

输出的数据类型

指定输出的数据类型为完整的精度|最小无符号整数|||int8|uint8|int16|uint16|int32|uint32|逻辑.默认为完整的精度

当输入信号是整数数据类型时,必须拥有定点设计器™用户许可才能在中使用此属性最小无符号整数完整的精度模式。

定点属性

方法

重置 重置Viterbi解码器对象的状态
一步 使用维特比算法解码卷积编码数据
通用于所有系统对象
释放

允许系统对象属性值更改

例子

全部展开

通过AWGN信道发送卷积编码的8-DPSK调制位流。然后,使用维特比解码器解调和解码。

创建必要的System对象。

hConEnc = comm.ConvolutionalEncoder;hMod = com . dpskmodulator (“BitInput”,真正的);hChan = com . awgnchannel (“NoiseMethod”,...信噪比(SNR),...“信噪比”10);hDemod = comm. dpskdemoator (“BitOutput”,真正的);hDec = com . viterbidecoder (“InputFormat”,“硬”);error = com . errorrate (“ComputationDelay”3,“ReceiveDelay”34);

数据处理步骤如下:

  1. 生成随机位

  2. 对数据进行卷积编码

  3. 应用DPSK调制

  4. 将调制信号通过AWGN

  5. 解调噪声信号

  6. 使用维特比算法解码数据

  7. 收集错误统计信息

Counter = 1:20 data = randi([0 1],30,1);encodedData = step(hConEnc, data);modSignal = step(hMod, encodedData);receivedSignal = step(hChan, modSignal);demodSignal = step(hDemod, receivedSignal);receivedBits = step(hDec, demodSignal);errors = step(error, data, receivedBits);结束

显示错误数。

错误(2)
Ans = 3

使用卷积编码器和具有确定穿孔模式的维特比解码器对比特序列进行编码和解码。验证输入和输出位是否相同

定义穿刺模式矩阵并将其重塑为向量形式,以便与Encoder和Decoder对象一起使用。

pPatternMat = [1 0 1;1 1 0];pPatternVec =重塑(pPatternMat,6,1);

创建卷积编码器和维特比解码器,其中穿刺模式由pPatternVec

ENC = comm.ConvolutionalEncoder(...“PuncturePatternSource”,“属性”,...“PuncturePattern”, pPatternVec);viterbidecoder (“InputFormat”,“硬”,...“PuncturePatternSource”,“属性”,...“PuncturePattern”, pPatternVec);

创建具有适当接收延迟的错误率计数器。

ERR = com . errorrate (“ReceiveDelay”, DEC.TracebackDepth);

对随机位序列进行编码和解码。

dataIn = randi([0 1],600,1);dataEncoded = step(ENC,dataIn);dataOut = step(DEC,dataEncoded);

验证输出数据中没有错误。

errStats = step(ERR,dataIn,dataOut);errStats (2)
Ans = 0

算法

类中描述的算法、输入和输出维特比译码器阻塞引用页面。对象属性对应于块参数,除了:

参考文献

[1] Moision, B.“卷积码的截断深度经验法则”,信息理论与应用研讨会,第555-557页,2008。

扩展功能

在R2012a中介绍

这个话题有帮助吗?