主要内容

缓冲和基于帧的处理

帧缓冲输入

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

下图是将帧大小为1的信号转换为帧大小为1的信号的图形表示l缓冲区块。

在下面的例子中,一个每帧1采样的双通道信号使用Buffer块被缓冲成一个每帧4采样的双通道信号:

打开ex_buffer_tut模型。

双击Signal From Workspace块。打开“来自工作区的信号”对话框。参数设置如下:

  • 信号=(1:10; 1: 1: -10)”

  • 样品时间= 1

  • 每帧样本= 1

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

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

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

双击Buffer块。打开“缓冲区”对话框。参数设置如下:

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

  • 缓冲重叠= 0

  • 初始条件= 0

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

运行模型。

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

或者,您可以设置每帧样本参数的信号从工作区块到4,并创建相同的信号上面没有使用缓冲区块。Signal From Workspace块在内部执行缓冲,以便输出一个双通道帧。

将信号缓冲到有重叠的帧中

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

缓冲重叠在L > 0重叠情况下,输出的帧周期为(Mo-L)*Tsi,其中Tsi为输入采样周期,Mo为缓冲区大小

请注意:设置缓冲重叠参数设置为负值,以实现比非重叠情况下更慢的输出帧速率。输出帧周期仍然是Tsi*(Mo-L),但现在L < 0。只有最新的输入才包含在输出缓冲区中。之前的L输入被丢弃。

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

打开ex_buffer_tut3模型。

同样,变量sp_examples_src加载到MATLAB工作区中。该变量定义如下:

Sp_examples_src =[1 1 5 -1;2 1 5 -2;3 0 5 -3;4 0 5 -4;5 15 5 -5;6 1 5 -6];

双击Signal From Workspace块。打开“来自工作区的信号”对话框。设置block参数如下:

  • 信号= sp_examples_src

  • 样品时间= 1

  • 每帧样本= 1

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

基于这些参数,Signal from Workspace块输出一个采样周期为1秒的信号。因为你设置了每帧样本参数设置为1时,Signal From Workspace块在每个采样时间输出一个四通道的采样。保存这些参数并单击关闭对话框好吧

双击Buffer块。打开“缓冲区”对话框。按如下参数配置块参数,单击好吧

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

  • 缓冲重叠= 1

  • 初始条件= 0

因为你设置了输出缓冲区大小参数为3时,Buffer块输出帧大小为3的信号。另外,因为你设置了缓冲重叠参数为1时,前一个输出帧的最后一个样本是下一个输出帧的第一个样本。

运行模型。

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

在MATLAB命令提示符下,键入sp_examples_yout

Sp_examples_yout = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 5 -1 2 1 5 -2 2 1 5 -2 3 0 5 -3 4 0 5 -4 4 0 5 -4 5 1 5 -5 6 1 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 0 0 0 0 0 0 0 0 0 0 0 0 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:

打开ex_buffer_tut4模型。

的变量sp_examples_src加载到MATLAB工作区中。该变量定义为:

Sp_examples_src = [1 1;2 1;3 0;4 0;5 1;6 1;7 0;8 0]

双击Signal From Workspace块。打开“来自工作区的信号”对话框。设置block参数如下:

  • 信号sp_examples_src

  • 样品时间= 1

  • 每帧样本= 4

基于这些参数,Signal From Workspace块输出一个采样周期为1秒、帧大小为4的双通道信号。保存这些参数并单击关闭对话框好吧

双击Buffer块。打开“缓冲区”对话框。按如下参数配置块参数,单击好吧

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

  • 缓冲重叠= 1

  • 初始条件= 0

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

运行模型。

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

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

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

缓冲延迟和初始条件

在例子中将信号缓冲到有重叠的帧中而且缓冲帧输入到其他帧输入时,输入信号被一定数量的采样延迟。初始输出样例对应于为初始条件参数。上述两个例子的初始条件都为零。

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

的语法rebuffer_delay (f, n v)以样本形式返回多任务操作期间缓冲和取消缓冲块引入的延迟,其中f是输入帧的大小,n输出缓冲区大小参数设置、v缓冲重叠参数设置。

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

D = rebuffer_delay(4,3,1) D = 8

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

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

将帧信号缓冲为采样信号

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

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

输出的采样周期Tso是否与输入帧周期有关Tfi通过输入帧大小心肌梗死

$$Tso = Tfi/Mi$$

Unbuffer块始终保留信号采样周期(Tso = Tsi)。看到在Simulink中使用帧再缓冲块转换样本和帧速率金宝app有关汇率转换的更多信息。

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

打开ex_unbuffer_tut模型。

双击Signal From Workspace块。打开“来自工作区的信号”对话框。设置block参数如下:

  • 信号=(1:10; 1: 1: -10)”

  • 样品时间= 1

  • 每帧样本= 4

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

基于这些参数,Signal From Workspace块输出一个帧大小为4的双通道信号。保存这些参数并单击关闭对话框好吧

双击Unbuffer块。打开Unbuffer对话框。设置初始条件参数为0,然后单击好吧

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

运行模型。

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

请注意参数指定的值,Unbuffer块生成下图中未显示的初始条件初始条件参数。看到Unbuffer有关输出中出现的初始条件数量的信息,请参阅。

在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 sp_examples_yout (:,: 8) = 4 4 sp_examples_yout (:,: 9) = 5 5 sp_examples_yout (:,: 10) = 6 6 sp_examples_yout (:,: 11) = 7 7

该Unbuffer块将该信号缓冲为一个双通道信号。输出矩阵的每一页表示不同的采样时间。

相关的话题