主要内容

whdlFramesToSamples

将基于帧的数据转换为样本流

描述

样品ctrllen) = whdlFramesToSamples (将基于帧的数据序列化为样本流和伴随的控制信号。控制信号表明样本的有效性和帧的边界。这个函数也返回一个向量,len,表示每个样本对应的帧大小。

例子

样品ctrllen) = whdlFramesToSamples (postsampleidlespostframeidles在样本流中插入空闲周期,样品.指定在输入样本之间插入的空闲循环数,postsampleidles,和帧间空闲循环数,postframeidles

例子

样品ctrllen) = whdlFramesToSamples (postsampleidlespostframeidlessamplesize创建一个样例流,其中每个样例由samplesize值。函数插入samplesize请求的每个空闲周期为零。的ctrl而且len向量的大小和samplesize是1。

例子

样品ctrllen) = whdlFramesToSamples (postsampleidlespostframeidlessamplesize交叉对样本流排序,假设输入样本是交错的,当交叉是1 (真正的)。的交叉参数仅在samplesize大于1。

例子

全部折叠

这个例子展示了如何使用LTE Turbo Encoder块对数据进行编码,以及如何将硬件友好的设计与LTE Toolbox™的结果进行比较。工作流程遵循以下步骤:

  1. 在MATLAB中生成随机输入样本帧。

  2. 使用LTE工具箱功能对数据进行编码lteTurboEncode

  3. 将框架输入数据转换为样本流,并将该流导入Simulink®。

  4. 要使用硬件友好的体系结构对示例进行编码,请运行Simulink模型,其中包含无线HDL Toolbox™块LTE Turbo Encoder。

  5. 导出编码样本流到MATLAB工作区。

  6. 将示例流转换回框架数据,并将框架与参考数据进行比较。

生成输入数据帧。生成参考编码数据使用lteTurboEncode

rng (0);turboframesize = 40;numframes = 2;txBits =细胞(1、numframes);codedData =细胞(1、numframes);ii = 1:numframes txBits{ii} = logical(randi([0 1],turboframesize,1));codedData {2} = lteTurboEncode (txBits {2});结束

为Simulink模型序列化输入数据。在每一帧之间留出足够的时间,以便在下一帧开始之前对每一帧进行完全编码。LTE Turbo Encoder块采取inframesize+ 16循环完成一帧的编码。

inframes = txBits;inframesize =大小(inframes {1}, 1);idlecyclesbetweensamples = 0;idlecyclesbetweenframes = inframesize + 16;[sampleIn, ctrlIn] =...whdlFramesToSamples (inframes...idlecyclesbetweensamples,...idlecyclesbetweenframes);

运行Simulink模型。模拟时间等于输入样本的数量。由于帧之间增加了空闲周期,流输入数据包含了足够的周期,以便模型完成两帧的编码。

sampletime = 1;samplesizeIn = 1;simTime =大小(ctrlIn, 1);modelname =“ltehdlTurboEncoderModel”;open_system (modelname);sim (modelname);

导出Simulink模型sampleOut_ts而且ctrlOut_ts回到MATLAB工作空间。对输出样本进行反序列化,并将框架数据与参考编码框架进行比较。

LTE Turbo Encoder块的输出样本与奇偶校验位交错。

Hardware-friendly输出:S_1 p1_1 p2_1 s2 p1_2 p2_2…Sn P1_n P2_n

LTE工具箱输出:S_1 S_2……S_n P1_1 P1_2…P2_1 P2_2…P2_n

控件的交错选项对示例重新排序whdlSamplesToFrames函数。将重新排序的输出帧与参考编码帧进行比较。

sampleOut = sampleOut ';interleaveSamples = true;outframes = whdlSamplesToFrames (sampleOut (:), ctrlOut, [], interleaveSamples);流(“\ nLTE涡轮编码器\ n”);ii = 1:numframes numBitsDiff = sum(outframes{ii} ~= codedData{ii});流([' Frame %d: Behavioral and '...'HDL模拟不同%d位\n'),二、numBitsDiff);结束
最大帧尺寸计算为132个样本。帧1:行为和HDL模拟相差0位帧2:行为和HDL模拟相差0位

输入参数

全部折叠

输入样本的帧,指定为列向量或列向量的单元格数组。单元格数组中的帧可以是不同大小的。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|fi

在样本之间插入的空闲周期数,指定为整数。函数插入samplesize0为每个空闲周期,并设置所有控制信号为0 ()。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

在帧之间插入的空闲循环数,指定为整数。函数插入samplesize0为每个空闲周期,并设置所有控制信号为0 ()。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

表示每个样本的值的数目,指定为正整数。该函数为每个人返回一组控制信号samplesize值。

例如,在LTE标准中,涡轮码率为1/3,因此每个涡轮编码样本由一个系统的、两个奇偶校验值表示:年代nPn1,Pn2.在本例中,设置samplesize3.

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

输出样本相对于输入样本的顺序,当有多个值表示每个样本时,指定为一个逻辑标量。

例如,对于1/3涡轮编码的样本,输入帧可以排序[s_1 p1_1 p2_1 s_2 p1_2 p2_2][s_1 s_2 p1_1 p1_2 p2_1 p2_2].在第一种情况下,默认输出的顺序与输入的顺序相同。要实现第二个输入的输出顺序,请设置交叉1 (真正的)。

数据类型:逻辑

输出参数

全部折叠

样本流,作为列向量返回。为N样本在输入帧中,输出为N+samplesize×(N×idlecyclesbetweensamples+idlecyclesbetweenframes)每帧值。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|fi

控制信号随样品流一起返回3矩阵。矩阵包含三个控制信号,开始结束,有效的,对于每一个samplesize元素样品.为N输入样本F框架,N+N×idlecyclesbetweensamples+F×idlecyclesbetweenframes.当您将此变量导入到Simulink中时®,用一个示例控制总线创建器模块将信号转换为无线HDL工具箱™模块使用的总线类型。

数据类型:逻辑

帧长度,作为整数的列向量返回。这个值是每一帧对应的有效样本的数量samplesize元素样品.这个向量的长度等于ctrl

数据类型:

版本历史

介绍了R2017b

另请参阅

功能

Baidu
map