主要内容

Buffer

将输入序列分组或合并为更小或更大的帧大小

为了将输入数据缓冲为整数倍的帧大小,请使用 N-Ratio Buffer 模块代替 Buffer 模块。N-Ratio Buffer 模块具有更低的延迟,并为 MikMi 的帧转换优化在生成代码中使用的内存,其中 k 是输出帧长度与输入帧长度的比值。

  • Buffer block

库:
DSP System Toolbox / Signal Management / Buffers

描述

Buffer 模块始终执行基于帧的处理。该模块重新分布输入的每一列中的数据,以产生具有不同帧大小的输出。将信号合并为更大的帧大小会产生帧速率比输入更慢的输出。例如,假设有下图所示的标量输入。

Input of the Buffer block shows scalars 1 through 9. Output of the Buffer block shows frames of size 3.

将信号分组为更小的帧大小会产生帧速率比输入更快的输出。例如,假设有下图所示的标量输出。

Input of the Buffer block shows frames of size 3. Output of the Buffer block shows scalars from 1 through 9.

该模块协调非重叠缓冲区的输出帧大小帧速率,使得信号的采样周期在输入和输出处相同:Tso = Tsi

当模块输入和输出速率相同时,此模块支持触发子系统。

示例

端口

输入

全部展开

要缓冲单通道信号,请输入一个标量或列向量。要缓冲多通道信号,请输入一个行向量或矩阵。要缓冲单通道信号,请输入一个大小为 Mi×1 的标量或列向量,其中 Mi 是输入帧大小。

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point
复数支持:

输出

全部展开

缓冲的输入信号,以向量或矩阵形式返回。

当输入是单通道信号时:

  • 1×1(标量)- 输出是 Mo×1 向量。

  • Mi×1(列向量)- 输出是 Mo×1 向量。

其中

  • Mi - 输入帧大小

  • Mo - 输出缓冲区大小参数的值

输入帧周期是 Mi · Tsi,其中 Tsi 是输入采样周期。输出帧周期是 (MoL)Tsi,其中 L缓冲区重叠参数的值,且 Tsi 是输入采样周期。当您将缓冲区重叠参数设置为 Mo – 1 时,输出帧周期等于输入采样周期。

当输入是多通道信号时:

  • N - 输出是 Mo×N 矩阵。

  • Mi×N - 输出是 Mo×N 矩阵。

其中

  • N - 信号中的通道数

  • Mi - 输入帧周期

  • Mo输出缓冲区大小参数的值,可以大于或小于输入帧大小 Mi。该模块分别缓冲 N 个输入通道中的每一个。

输入帧周期是 Mi · Tsi。输出帧周期是 (MoL)Tsi,当缓冲区重叠Mo1 时等于序列采样周期。因此,输出采样周期 Tso 与输入采样周期 Tsi 的关系为

Tso=(MoL)TsiMi

输出具有与输入相同的数据类型和复/实性

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point
复数支持:

参数

全部展开

指定要从每个通道缓冲到输出帧中的连续采样数 Mo

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

指定采样数 L,它指定每个连续输出帧中的重叠或欠叠量。

要重叠缓冲区中的数据,请指定在范围 0L<Mo 内的 L 值,其中 Mo输出缓冲区大小参数的值。模块从当前输出中取 L 个采样(行)并在下一个输出中重复它们。在重叠情况下,该模块在将缓冲数据传播到输出之前采集 MoL的输入采样。

L<0 时,表示您正在以欠叠方式缓冲信号。该模块在缓冲区填满后丢弃 L 个输入采样,并以周期 (MoL)Tsi 输出缓冲区内容,该周期比零重叠情况下的周期更长。

输出帧周期是 (MoL)Tsi,当缓冲区重叠Mo1 时等于输入序列采样周期 Tsi

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

指定在非零延迟情况下模块的初始输出值,类型为标量、向量或矩阵。

对于除零任务延迟中列出的情况外的所有单任务操作情况,Buffer 模块的缓冲区初始化为由初始条件参数指定的值。该模块从此缓冲区读取以生成前 D 个输出采样,其中

D={Mo+L(L0)Mo(L<0)

初始条件参数的维度取决于缓冲区重叠L 以及输入是单通道还是多通道:

  • L0 时,初始条件参数必须为标量。

  • L=0 时,初始条件参数可以是标量,也可以是具有以下任一约束的向量:

    • 对于单通道输入,如果 Mi 为 1,则初始条件参数可以是长度为 Mo 的向量;或者如果 Mo 为 1,则可以是长度为 Mi 的向量。

    • 对于多通道输入,如果 Mi 为 1,则初始条件参数可以是长度为 Mo * N 的向量;或者如果 Mo 为 1,则可以是长度为 Mi * N 的向量。

对于所有多任务操作,使用 rebuffer_delay 函数计算 Buffer 模块针对给定缓冲区大小和缓冲区重叠组合引入的精确延迟(以采样为单位)。

对于在任意帧大小之间的通用缓冲,初始条件参数必须为标量,然后该标量在初始输出的所有元素中重复。但是,在输入是 1×N 行向量且模块的输出是 Mo×N 矩阵的特殊情况下,初始条件可以是:

  • Mo×N 矩阵

  • 长度为 Mo 的向量,该向量在初始输出的所有列中重复

  • 标量,该标量在初始输出的所有元素中重复

在输出是 1×N 行向量的特殊情况(这是取消缓冲 Mi×N 矩阵的结果)下,初始条件可以是:

  • 一个包含 Mi 个采样的向量,在前 Mi 个采样时间内为每个通道顺序输出

  • 标量,该标量在初始输出的所有元素中重复

有关延迟和 Simulink® 任务模式的详细信息,请参阅Excess Algorithmic Delay (Tasking Latency)基于时间的调度和代码生成 (Simulink Coder)

数据类型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | Boolean | fixed point
复数支持:

模块特性

数据类型

Boolean | double | fixed point | integer | single

直接馈通

no

多维信号

no

可变大小信号

no

过零检测

no

详细信息

全部展开

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出

全部展开