heldeintrlv
恢复符号排列的顺序使用helintrlv
语法
(deintrlved、州)= heldeintrlv(数据、坳ngrp stp)
(deintrlved、州)= heldeintrlv(数据、坳ngrp、stp init_state)
deintrlved = heldeintrlv(数据、坳ngrp、stp init_state)
描述
(deintrlved、州)= heldeintrlv(数据、坳ngrp stp)
恢复符号的顺序数据
一行一行地放置在一个数组,然后选择团体以螺旋的方式输出,deintrlved
。数据
必须有* ngrp上校
元素。如果数据
是一个有多个行和列的矩阵,它必须有吗* ngrp上校
独立行和函数过程的列。状态
是一个结构数组的最终状态。state.value
商店输入符号仍在上校
数组的列并没有出现在输出。
函数使用数组内部的计算。有无限的行索引数组1,2,3,…,上校
列。该函数初始化数组与零。然后它的地方* ngrp上校
从输入到下一个符号ngrp
数组的行。函数符号输出数组的地方,intrlved
,将ngrp
一次符号;k组ngrp
符号的来自于k列数组,从行1 + (k - 1) *stp
。一些输出符号的默认值0而不是输入符号;同样,一些输入符号的数组并没有出现在输出。
(deintrlved、州)= heldeintrlv(数据、坳ngrp、stp init_state)
初始化数组中包含的符号init_state.value
而不是零。结构init_state
通常是状态
输出从先前的调用相同的函数,并与相应的分界。在这个语法,一些输出符号的默认值0,有些输入符号数据
,有些是初始化值init_state.value
。
deintrlved = heldeintrlv(数据、坳ngrp、stp init_state)
上面的语法是一样的,只是它不记录deinterleaver的最终状态。这语法适合最后在一系列调用这个函数。然而,如果你打算继续deinterleaving过程来调用这个函数,上面的语法是更合适。
例子
交叉数据恢复,考虑的延迟interleaver-deinterleaver一对。
坳= 4;ngrp = 3;stp = 2;%螺旋衬垫参数%计算interleaver-deinterleaver一对的延迟。delayval =坳* ngrp *装天花板(stp * (col-1) / ngrp);len = * ngrp上校;%过程这许多符号。data =兰迪(len [0 9], 1);%随机符号data_padded =[数据;0 (delayval 1)];%垫0。%交错在数据。[i1, istate] = helintrlv (data_padded (1: len)上校,ngrp, stp);[i2, istate] = helintrlv (data_padded (len + 1:2 * len)上校,ngrp,…stp、istate);i3 = helintrlv (data_padded (len + 2 * 1:结束),坳,ngrp, stp, istate);% Deinterleave。[d1, dstate] = heldeintrlv (i1、坳ngrp stp);[d2, dstate] = heldeintrlv (i2坳,ngrp stp dstate);d3 = heldeintrlv (stp, i3、坳ngrp dstate);%的检查结果。d0 = [d1;d2;d3);%所有deinterleaved数据d0_trunc = d0 (delayval + 1:结束);%将延迟。ser = symerr(数据、d0_trunc)
下面的输出显示,无符号错误发生。
ser = 0
版本历史
之前介绍过的R2006a