主要内容

缓冲和基于帧的处理

帧缓冲输入

帧大小的多通道信号1可以缓冲成帧大小的多通道信号吗l使用Buffer块。l大于1

下图是带有帧大小的信号的图形表示1被转换成帧大小的信号l缓冲块。

在下面的示例中,是一个双通道1采样每帧信号被缓冲到一个双通道4使用Buffer块对每帧信号进行采样:

  1. 在MATLAB®命令提示符下,键入ex_buffer_tut

    打开Buffer Example模型。

  2. 双击来自工作区的信号块。的源块参数:来自工作区的信号对话框打开。

  3. 参数配置如下:

    • 信号[1:10; 1: 1: -10)

    • 样品时间1

    • 样品每帧1

    • 表单输出后的最终数据值设置为零

    基于这些参数,Signal from Workspace块输出帧长为1,采样周期为1秒的信号。因为你设置了样品每帧参数设置为1,则Signal From Workspace块在每个采样时间输出一个双通道样本。

  4. 保存这些参数并单击关闭对话框好吧

  5. 双击Buffer块。的功能块参数:Buffer对话框打开。

  6. 参数配置如下:

    • 输出缓冲区大小(每个通道)4

    • 缓冲重叠0

    • 初始条件0

    因为你设置了输出缓冲区的大小参数4,缓冲区块输出帧大小为4的帧信号。

  7. 运行模型。

    下图是模拟过程中模型行为的图形解释。

请注意

或者,您可以设置样品每帧的Signal From Workspace块的参数4并创建上面所示的相同信号,而不使用Buffer块。Signal From Workspace块在内部执行缓冲,以输出一个双通道帧。

将缓冲区信号转换为具有重叠的帧

在某些情况下,处理表示原始信号重叠部分的数据是有用的。例如,在估计信号的功率谱时,通常需要计算重叠部分数据的FFT。在计算滑动窗口上的统计信息或自适应滤波时,也需要重叠缓冲区。

缓冲重叠参数指定重叠点的数目,l.在重叠情况下(l> 0),输出帧周期为(o-l) *T如果,在那里T如果输入的样本周期和o缓冲区大小

请注意

设置缓冲重叠参数为负值,以实现输出帧率而不是不重叠的情况。输出帧的周期仍然是T如果*(o-l),但现在有l< 0。只有o最新的输入包含在输出缓冲区中。前面的l输入被丢弃。

在下面的例子中,有帧长的四通道信号1采样周期1被缓冲为帧大小为3、帧周期为2的信号。由于缓冲重叠,输入采样周期不守恒,输出采样周期为2/3:

  1. 在MATLAB命令提示符处,输入ex_buffer_tut3

    打开缓冲区示例T3模型。

    另外,变量sp_examples_src加载到MATLAB工作空间中。该变量的定义如下:

    Sp_examples_src =[1 1 5 -1;2 1 5 -2;3 0 5 -3;4 0 5 -4;5 1 5 -5;6 1 5 -6];
  2. 双击来自工作区的信号块。的源块参数:来自工作区的信号对话框打开。

  3. 设置参数如下:

    • 信号sp_examples_src

    • 样品时间1

    • 样品每帧1

    • 表单输出后的最终数据值由设置为零

    基于这些参数,Signal from Workspace块输出一个采样周期为1秒的信号。因为你设置了样品每帧参数设置为1时,从工作区信号块在每个采样时间输出一个四通道样本。

  4. 保存这些参数并单击关闭对话框好吧

  5. 双击Buffer块。的功能块参数:Buffer对话框打开。

  6. 按如下参数设置块参数,单击好吧

    • 输出缓冲区大小(每个通道)3.

    • 缓冲重叠1

    • 初始条件0

    因为你设置了输出缓冲区的大小参数3.,缓冲区块输出帧大小为3的信号。而且,因为你设置了缓冲重叠参数1,上一个输出帧的最后一个样本是下一个输出帧的第一个样本。

  7. 运行模型。

    下图是模拟过程中模型行为的图形解释。

  8. 在MATLAB命令提示符处,输入sp_examples_yout

    在MATLAB命令窗口中显示如下。

    sp_examples_yout = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 5 1 2 1 2 2 1 2 3 5 0 5 3 4 5 0 5 4 4 0 4 5 1 5 5 6 5 6 6 1 5 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    注意,输入直到第五行,即第二帧的第二行,才开始出现在输出中。这是由于区块的延迟。

看到超额算法延迟(任务延迟)有关算法延迟的一般信息。有关如何计算缓冲延迟的说明,请参见缓冲延迟和初始条件

缓冲帧输入到其他帧输入

在下面的示例中,帧大小为4的双通道信号被重缓冲为帧大小为3、帧周期为2的信号。由于重叠,输入采样周期不守恒,输出采样周期为2/3:

  1. 在MATLAB命令提示符处,输入ex_buffer_tut4

    打开Buffer Example T4模型。

    另外,变量sp_examples_src加载到MATLAB工作空间中。该变量定义为

    Sp_examples_src = [1 1;2 1;3 0;4 0;5 1;6 1;7 0;8 0]
  2. 双击来自工作区的信号块。的源块参数:来自工作区的信号对话框打开。

  3. 设置参数如下:

    • 信号sp_examples_src

    • 样品时间1

    • 样品每帧4

    基于这些参数,Signal From Workspace块输出一个采样周期为的双通道帧信号1第二和帧的大小4

  4. 保存这些参数并单击关闭对话框好吧

  5. 双击Buffer块。的功能块参数:Buffer对话框打开。

  6. 按如下参数设置块参数,单击好吧

    • 输出缓冲区大小(每个通道)3.

    • 缓冲重叠1

    • 初始条件0

    基于这些参数,Buffer块输出一个双通道帧信号,帧大小为3.

  7. 运行模型。

    下图是模拟过程中模型行为的图形表示。

    注意,输入直到第三个输出矩阵的最后一行才开始出现在输出中。这是由于区块的延迟。

看到超额算法延迟(任务延迟)有关算法延迟的一般信息。有关如何计算缓冲延迟的说明,请参阅缓冲延迟和初始条件

缓冲延迟和初始条件

例子中将缓冲区信号转换为具有重叠的帧缓冲帧输入到其他帧输入时,输入信号被一定数量的采样延时。初始输出样本对应于为初始条件参数。在上面提到的两个例子中,初始条件都是零。

在大多数情况下,Buffer和Unbuffer块都有一定的延迟或延迟。这个延迟取决于块参数设置和Simulink金宝app®任务模式。你可以使用rebuffer_delay函数确定任意帧大小和重叠组合的块延迟长度。

的语法rebuffer_delay (f, n v)返回在样本中由多任务操作期间的缓冲和非缓冲块引入的延迟f为输入帧大小,n输出缓冲区的大小参数设置,v缓冲重叠参数设置。

例如,可以计算中讨论的模型的延迟缓冲帧输入到其他帧输入在MATLAB命令行中使用以下命令:

D = rebuffer_delay(4,3,1

这个结果与该示例中的块输出一致。注意,这个模型是在Simulink多任务模式下模拟的。金宝app

有关延迟的更多信息,请参见超额算法延迟(任务延迟).有关特定块的延迟信息,请参阅块参考页的“延迟”部分。有关的更多信息rebuffer_delay功能,请参阅rebuffer_delay

将帧信号解缓冲为样本信号

您可以解缓冲帧长度大于的多通道信号1为帧长等于的多信道信号1使用Unbuffer块。Unbuffer块执行Buffer块缓冲过程的逆操作,其中帧长度为1的信号被缓冲为帧长度大于1的信号。Unbuffer块从每个帧包含多个通道的n通道输入生成每个帧包含一个样本的n通道输出。每个输入矩阵的第一行总是第一个输出。

下图是这个过程的图形表示。

输出的采样周期,T所以,与输入帧周期有关,Tfi,根据输入帧大小,

T 年代 o T f /

Unbuffer块总是保持信号的采样周期(T所以T如果).看到在Simulink中转换样本和帧速率金宝app有关汇率转换的更多信息。

在下面的例子中,每帧有四个样本的双通道信号被非缓冲为每帧有一个样本的双通道信号:

  1. 在MATLAB命令提示符处,输入ex_unbuffer_tut

    打开Unbuffer Example模型。

  2. 双击信号从工作区块。的源块参数:来自工作区的信号对话框打开。

  3. 设置参数如下:

    • 信号[1:10; 1: 1: -10)

    • 样品时间1

    • 样品每帧4

    • 表单输出后的最终数据值由设置为零

    基于这些参数,Signal From Workspace块输出一个帧大小为4的双通道信号。

  4. 保存这些参数并单击关闭对话框好吧

  5. 双击Unbuffer块。的功能块参数:Unbuffer对话框打开。

  6. 设置初始条件参数0,然后单击好吧

    Unbuffer块将每帧带有四个样本的双通道信号解除缓冲为每帧带有一个样本的双通道信号。

  7. 运行模型。

    下图是模型模拟过程中所发生的情况的图形表示。

    请注意

    属性指定的值,Unbuffer块生成的初始条件在下面的图中没有显示初始条件参数。看到Unbuffer有关输出中出现的初始条件数量的信息,请参考页。

  8. 在MATLAB命令提示符处,输入sp_examples_yout

    下面是输出的一部分。

    sp_examples_yout (:: 1) = 0 0 sp_examples_yout (:,: 2) = 0 0 sp_examples_yout (:,:, 3) = 0 0 sp_examples_yout (:,:, 4) = 0 0 sp_examples_yout (:,:, 5) = 1 1 sp_examples_yout (:,: 6) = 2 2 sp_examples_yout (:,: 7) = 3 3

    Unbuffer块将信号解除缓冲区为双通道信号。输出矩阵的每一页代表一个不同的样本时间。

相关的话题