缓冲和基于帧的处理
帧缓冲输入
帧大小的多通道信号1
能否缓冲成多通道信号的帧大小l使用Buffer块。l大于1
.
下图是一个具有帧大小的信号的图形表示1
被转换成帧大小的信号l缓冲区块。
在下面的例子中,一个双通道1
采样每帧信号被缓冲成一个双通道4
使用Buffer块对每帧信号进行采样:
在MATLAB中®命令提示符,键入
ex_buffer_tut
.打开缓冲区示例模型。
双击Signal From Workspace块。的源块参数:来自工作区的信号对话框。
参数设置如下:
信号=
[1:10; 1: 1: -10)
样品时间=
1
每帧样本=
1
表单输出后的最终数据值=
设置为零
基于这些参数,工作空间信号Block输出帧长为1、采样周期为1秒的信号。因为你设置了每帧样本参数设置为1时,Signal From Workspace块在每个采样时间输出一个双通道采样。
保存这些参数并单击关闭对话框好吧.
双击Buffer块。的功能块参数:Buffer对话框。
参数设置如下:
输出缓冲区大小(每个通道)=
4
缓冲重叠=
0
初始条件=
0
因为你设置了输出缓冲区大小参数
4
,缓冲区块输出帧大小为4的帧信号。运行模型。
下图是模拟过程中模型行为的图形化解释。
请注意
或者,您可以设置每帧样本参数。来自工作空间的信号块4
并在不使用Buffer块的情况下创建上面所示的相同信号。的来自工作空间的信号Block在内部执行缓冲,以便输出一个双通道帧。
将信号缓冲到有重叠的帧中
在某些情况下,处理表示原始信号重叠部分的数据是有用的。例如,在估计信号的功率谱时,通常需要计算数据重叠部分的FFT。在计算滑动窗口的统计信息或进行自适应过滤时,也需要重叠缓冲区。
的缓冲重叠参数。缓冲Block指定重叠点的数量,l.在重叠情况下(l> 0),输出的帧周期为(米o-l) *T如果,在那里T如果输入的样本周期和米o是缓冲区大小.
请注意
设置缓冲重叠参数设置为负值以实现输出帧速率慢而非重叠的情况。输出帧周期是静止的T如果* (米o-l),但现在与l< 0。只有米o最新的输入包含在输出缓冲区中。前面的l输入被丢弃。
在下面的例子中,一个具有帧长度的四通道信号1
采样周期1被缓冲为帧大小为3,帧周期为2的信号。由于缓冲区重叠,输入采样周期不守恒,输出采样周期为2/3:
在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 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块。的功能块参数:Buffer对话框。
按如下参数配置块参数,单击好吧:
输出缓冲区大小(每个通道)=
3.
缓冲重叠=
1
初始条件=
0
因为你设置了输出缓冲区大小参数
3.
时,Buffer块输出帧大小为3的信号。另外,因为你设置了缓冲重叠参数1
,上一个输出帧的最后一个样本是下一个输出帧的第一个样本。运行模型。
下图是模拟过程中模型行为的图形化解释。
在MATLAB命令提示符下,键入
sp_examples_yout
.在MATLAB命令窗口中显示如下。
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:
在MATLAB命令提示符下,键入
ex_buffer_tut4
.打开缓冲器示例T4模型。
同样,变量
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块。的功能块参数:Buffer对话框。
按如下参数配置块参数,单击好吧:
输出缓冲区大小(每个通道)=
3.
缓冲重叠=
1
初始条件=
0
基于这些参数,Buffer块输出一个帧大小为的双通道帧信号
3.
.运行模型。
下图是模拟过程中模型行为的图形表示。
请注意,直到第三个输出矩阵的最后一行,输入才开始出现在输出中。这是由于块延迟。
看到超时算法延迟(任务延迟)有关算法延迟的一般信息。有关如何计算缓冲延迟的说明,请参见缓冲延迟和初始条件.
缓冲延迟和初始条件
在例子中将信号缓冲到有重叠的帧中而且缓冲帧输入到其他帧输入时,输入信号被一定数量的采样延迟。初始输出样例对应于为初始条件参数。上述两个例子的初始条件都为零。
在大多数情况下,缓冲而且Unbuffer块有一定的延迟或延迟。这个延迟取决于块参数设置和Simulink®任务模式。您可以使用rebuffer_delay
函数确定帧大小和重叠的任何组合的块延迟长度。
的语法rebuffer_delay (f, n v)
以样本形式返回多任务操作期间缓冲和取消缓冲块引入的延迟,其中f
是输入帧的大小,n
是输出缓冲区大小参数设置、v
是缓冲重叠参数设置。
方法中讨论的模型的延迟计算缓冲帧输入到其他帧输入在MATLAB命令行中使用以下命令:
D = rebuffer_delay(4,3,1) D = 8
该结果与该示例中的块输出一致。注意,这个模型是在Simulink多任务模式下模拟的。
有关延迟的详细信息,请参见超时算法延迟(任务延迟).有关特定块的延迟信息,请参阅块参考页的“延迟”部分。有关的更多信息rebuffer_delay
功能,请参阅rebuffer_delay
.
将帧信号缓冲为采样信号
您可以取消缓冲帧长度大于1
成多路信号的帧长等于1
使用Unbuffer块。的Unbuffer块的逆操作缓冲Block的缓冲过程,其中帧长为1的信号被缓冲为帧长大于1的信号。Unbuffer块生成一个N-通道输出,每帧包含一个样本,来自每帧包含多个通道的n通道输入。每个输入矩阵的第一行总是第一个输出。
下图是这一过程的图形表示。
输出的采样周期,T所以,与输入帧周期有关,Tfi,由输入帧大小,米我.
的Unbuffer块始终保留信号采样周期(T所以=T如果).看到在Simulink中使用帧再缓冲块转换样本和帧速率有关汇率转换的更多信息。
在下面的例子中,一个每帧有四个采样的双通道信号被非缓冲为一个每帧有一个采样的双通道信号:
在MATLAB命令提示符下,键入
ex_unbuffer_tut
.Unbuffer示例模型打开。
双击来自工作空间的信号块。的源块参数:来自工作区的信号对话框。
设置block参数如下:
信号=
[1:10; 1: 1: -10)
样品时间=
1
每帧样本=
4
表单输出后,最终数据值由=
设置为零
基于这些参数,Signal From Workspace块输出一个帧大小为4的双通道信号。
保存这些参数并单击关闭对话框好吧.
双击Unbuffer块。的功能块参数:Unbuffer对话框。
设置初始条件参数
0
,然后按好吧.的UnbufferBlock将每帧有四个采样的双通道信号缓冲为每帧有一个采样的双通道信号。
运行模型。
下图是在模型模拟过程中所发生的情况的图形表示。
请注意
属性所指定的值,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
的UnbufferBlock将信号缓冲为双通道信号。输出矩阵的每一页表示不同的采样时间。