主要内容

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

使用这个函数的逆helintrlv函数,使用相同的上校,ngrp,stp输入两个功能。在这种情况下,两个函数倒数的应用helintrlv紧随其后的是heldeintrlv叶子数据不变,在你的延迟坳* ngrp *装天花板(stp * (col-1) / ngrp)考虑在内。了解更多关于延误的卷积窄延迟的卷积窄

请注意

因为延迟是一个整数符号的数量的倍数数据,您必须使用heldeintrlv至少两次(可能更多次,根据实际的延迟值)之前,函数返回的结果,代表的不仅仅是延迟。

例子

交叉数据恢复,考虑的延迟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

另请参阅

主题