刺穿了卷积编码的
这个例子展示了如何使用卷积编码器和维特比译码器系统对象来模拟被刺破的编码系统。维特比译码器的复杂度和编码速率迅速增加。刺穿是一种技术,允许更高的利率代码使用标准的编码和解码速度1/2编码器和译码器。
介绍
这个例子展示了模拟通信系统组成的一个随机二进制源,卷积编码器,BPSK调制器,加性高斯白噪声(AWGN)信道,和维特比译码器。的例子显示了如何运行模拟获取比特误码率(BER)曲线和比较这些曲线理论的束缚。
初始化
卷积编码和刺穿
创建comm.ConvolutionalEncoder
系统对象和编码速率和约束长度7 1/2™。这个编码器以比特符号作为输入,并生成2比特符号作为输出。如果你认为3-bit消息作为输入,然后编码器将生成6-bit码字输出。
convEncoder = comm.ConvolutionalEncoder (poly2trellis (7 (171 133)));
指定一个穿刺模式创建一个利率3/4代码从之前的利率1/2代码使用穿刺模式向量[1;1,0,1,1,0]。穿刺的模式向量显示在位置1,2,4和5是传播,而职位3和6 0表明位穿刺或删除的传输信号。刺穿的效果是,现在,每一个3位的输入,刺穿了代码生成的4位的输出(相对于前6位产生刺穿)。这将导致利率3/4的代码。在这个例子中,穿刺模式向量的长度必须是一个整数倍数6因为3-bit输入转换为6-bit输出率1/2卷积编码器。
设置所需的穿刺模式卷积编码器的系统对象,hConvEnc
,设置PuncturePatternSource
财产财产
和PuncturePattern
财产[1;1,0,1,1,0]
。
convEncoder。PuncturePatternSource =“属性”;convEncoder。PuncturePattern = [1; 1, 0, 1, 1, 0];
调制器和通道
初始化一个调制顺序变量,米
2传输编码数据通过通道使用二进制相移键控调制。
M = 2;
创建一个comm.AWGNChannel
系统对象。设置NoiseMethod
房地产的渠道信号噪声比(Eb /不)
指定使用能源的噪音水平每一点噪声功率谱密度比(Eb /不)。在运行模拟时,测试不同的值的编码系统Eb /不通过改变比例EbNo
通道对象的属性。BPSK调制器产生单位功率的输出信号;设置SignalPower
属性1瓦特。系统是在符号率;设置SamplesPerSymbol
属性为1。
频道= comm.AWGNChannel (…NoiseMethod =信号噪声比(Eb /不)”,…SignalPower = 1,…SamplesPerSymbol = 1);
维特比解码与Depuncturing
配置一个comm.ViterbiDecoder
系统对象所以解码穿刺代码指定的卷积编码器。这个例子假定unquantized维特比译码器的输入,所以设置InputFormat
财产Unquantized
。
vitDecoder = comm.ViterbiDecoder (…poly2trellis(7, 133年[171]),…InputFormat =“Unquantized”);
一般来说,穿刺模式向量使用卷积编码器和维特比译码器必须相同。指定穿刺模式,设置PuncturePatternSource
财产财产
。设置PuncturePattern
属性相同的穿刺模式向量使用卷积编码器。
因为刺破位不传播,没有信息表明他们的价值观。因此,解码过程忽略了它们。
vitDecoder。PuncturePatternSource =“属性”;vitDecoder。PuncturePattern = convEncoder.PuncturePattern;
为1/2码率没有刺穿,你通常设置的回溯深度值接近40岁的维特比译码器。解码爆代码需要更高的价值,为了给解码器足够的数据来解决穿刺引入的不确定性。这个示例使用回溯的深度96。设置这个值使用TraceBackDepth
财产。
vitDecoder。TracebackDepth = 96;
计算出错率
创建一个comm.ErrorRate
计算器系统对象比较解码位原始传输位。出错率计算器对象的输出是一个三元素向量包含计算比特误码率(BER),观察到的数量错误,和处理的比特数。维特比译码器创建了一个延迟输出解码比特流等于回溯长度。考虑到这种延迟设置ReceiveDelay
属性出错率计算器系统的对象到96。
errorCalc = comm.ErrorRate (…ReceiveDelay = vitDecoder.TracebackDepth);
流处理循环
分析戳破了编码系统的误码性能不同的噪音水平。
未编码的和编码Eb /不比率值
一般来说,测量系统的性能根据能源每一点的值噪声功率谱密度比(Eb /不)可以在信道编码器的输入。这样做的原因是,这个量是直接控制的系统工程师。分析编码系统的性能对Eb / 2和5分贝之间没有值。
EbNoEncoderInput = 2:0.5:5;在dB %
信号进入AWGN信道的编码信号。把Eb /没有值,这样他们对应的能量比在编码器的输出。如果你输入三位编码器和获得四位输出,然后给出的能量关系3/4率如下:
EbNoEncoderOutput = EbNoEncoderInput + 10 * log10 (3/4);
模拟循环
得到的误码率性能结果,通过通信系统传输帧的3000位。对于每个Eb /没有值,停止模拟到达特定数量的错误或传输。提高结果的准确性,增加目标数量的错误或传输的最大数量。
frameLength = 3000;% 3的倍数这个值必须是一个整数targetErrors = 300;maxNumTx = 5 e6;
分配内存来存储结果,然后循环通过Eb /不编码值。仿真需要几秒钟才能完成。
BERVec = 0(3、长度(EbNoEncoderOutput));为n = 1:长度(EbNoEncoderOutput)重置(errorCalc)重置(convEncoder)重置(vitDecoder)通道。EbNo = EbNoEncoderOutput (n);而(BERVec (2 n) < targetErrors) & & (BERVec (n) < maxNumTx)数据=兰迪([0 1]frameLength 1);%生成二进制帧%卷积编码数据encData = convEncoder(数据);%调制编码数据modData = pskmod (encData 2);%通过通过AWGN信道调制信号channelOutput =通道(modData);%通过真正的通道的一部分% unquantized复杂的输出%维特比译码器的输入。decData = vitDecoder(真正的(channelOutput));%计算和误差积累BERVec (:, n) = errorCalc(数据,decData);结束结束
比较结果的理论曲线
我们比较仿真结果使用比特错误概率的近似值开往被刺破代码按[1]。以下命令计算近似值的绑定使用前七的Eb /没有值的总和2:0.5:5
。表2中的值用于nerr [2]。
dist = 11;nerr = [42 201 1492 10469 62935 379644 2253373];codeRate = 3/4;绑定=…nerr *(1/6) *误差补函数(√codeRate * (10.0。^ ((2: .02:5) / 10)) * dist))的;
阴谋的结果。如果目标数量的错误或模拟传输您指定的最大数量太小,曲线拟合的算法可能会失败。
berfit (EbNoEncoderInput BERVec (1:));%曲线拟结果持有在;semilogy((2: .02:5)绑定,‘g’);%的理论结果传奇(…“经验系统”,…“适合模拟系统”,…理论一定误码率的)轴(6 10 ^ 5 1 [1])
在某些情况下,以较低的误比特率,仿真结果显示出错率略高于绑定。结果模拟方差(如果少于500位观察错误)或从有限回溯深度解码器。
总结
我们利用几个系统对象来模拟通信系统卷积编码和刺穿。我们模拟了系统获得BER性能与不同的Eb /不比率值。结果比理论界限的误码率。
选定的参考书目
Yasuda Y。,K. Kashiki, and Y. Hirata, "High Rate Punctured Convolutional Codes for Soft Decision Viterbi Decoding," IEEE® Transactions on Communications, Vol. COM-32, March, 1984, pp. 315-319
开始,G。,Haccoun, D., and Paquin, C., "Further results on High-Rate Punctured Convolutional Codes for Viterbi and Sequential Decoding," IEEE Transactions on Communications, Vol. 38, No. 11, November, 1990, p. 1923