用于计算序列数据的协方差的方法及装置与流程

文档序号:17762454发布日期:2019-05-24 21:49阅读:436来源:国知局
用于计算序列数据的协方差的方法及装置与流程

本发明涉及序列数据处理技术领域,尤其涉及一种用于计算序列数据的协方差的方法及装置。



背景技术:

大规模数据通常以时间序列的形式呈现。对时间序列进行分析计算,寻找其中的数据变化规律,并预测其将来的数据变化趋势,在很多领域都能够起到重要的现实作用。时间序列分析作为数理统计学的分支,一方面,遵循数理统计学的基本原理,另一方面,由于时间的不可重复性,任意时刻只能获得唯一的序列观察值。这种特殊的数据结构导致时间序列分析具有很大特殊性。

数理统计学中的协方差能够用于衡量两个时间序列的相互关系,所以被广泛应用于金融随机分析和金融工程中。对于作为随机变量的时间序列x和时间序列y,协方差cov(x,y)的定义为:

cov(x,y)=e{[x-e(x)][y-e(y)]}=e(xy)-e(x)e(y)

其中,e(x)、e(y)、e(xy)和e{[x-e(x)][y-e(y)]}分别为时间序列x、时间序列y、时间序列x*y和时间序列[x-e(x)][y-e(y)]的期望值。若时间序列x的长度和时间序列y的长度均为n,且x(i)和y(i)分别为时间序列x的数据元素和时间序列y的数据元素,则协方差cov(x,y)可以表示为:

现有的大规模时间序列分析通常采用cpu(centralprocessingunit,中央处理器)或gpu(graphicsprocessingunit,图形处理器)来完成各个序列数据元素之间的复杂计算,cpu和gpu的运算模式并不完全适合大规模时间序列的处理,导致系统的数据吞吐率往往受到限制,同时系统的能耗也相对较高,无法满足大数据实时处理的需求。



技术实现要素:

有鉴于此,本发明提供一种用于计算序列数据的协方差的方法及装置,以提高对序列数据的协方差进行计算处理的实时性。

为了实现上述目的,本发明采用以下方案:

在本发明一实施例中,用于计算序列数据的协方差的方法,包括:

接收第一序列的第一数据和第二序列的第二数据,并将所述第一数据和所述第二数据分别存储至第一缓冲器和第二缓冲器;

在所述第一缓冲器中的数据的个数和所述第二缓冲器中的数据的个数均大于或等于滑动窗口的大小的情况下,根据所述第一缓冲器中所述滑动窗口所在位置从所述第一缓冲器读取数量为所述滑动窗口的大小的所述第一序列的数据,根据所述第二缓冲器中所述滑动窗口所在位置从所述第二缓冲器读取数量为所述滑动窗口的大小的所述第二序列的数据;

计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,用于分析包含所述第一数据的所述第一序列和包含所述第二数据的所述第二序列数据的相关性。

在本发明一实施例中,用于计算序列数据的协方差的装置,包括:

存储控制单元,用于接收第一序列的第一数据和第二序列的第二数据,并将所述第一数据和所述第二数据分别存储至第一缓冲器和第二缓冲器;

读取控制单元,用于在所述第一缓冲器中的数据的个数和所述第二缓冲器中的数据的个数均大于或等于滑动窗口的大小的情况下,根据所述第一缓冲器中所述滑动窗口所在位置从所述第一缓冲器读取数量为所述滑动窗口的大小的所述第一序列的数据,根据所述第二缓冲器中所述滑动窗口所在位置从所述第二缓冲器读取数量为所述滑动窗口的大小的所述第二序列的数据;

协方差计算单元,用于计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,用于分析包含所述第一数据的所述第一序列和包含所述第二数据的所述第二序列数据的相关性。

在本发明一实施例中,计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤。

在本发明一实施例中,计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。

本发明的用于计算序列数据的协方差的方法、用于计算序列数据的协方差的装置、计算机设备及计算机可读存储介质,通过将串行传输的第一序列和第二序列的数据存储至各自的缓冲器,然后根据设置的滑动窗口读取两个缓冲器中的序列数据,能够以并行方式计算两列序列数据的协方差。而且,在两个序列的新数据存储至各自的缓冲器时,能够通过灵活地移动滑动窗口来选择缓冲器中的新数据,实现对两个序列的新数据进行协方差计算。如此一来,通过本方案能够针对实时接收的两个序列的数据进行协方差计算,从而提高序列数据的协方差计算处理的实时性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1是本发明一实施例的用于计算序列数据的协方差的方法的流程示意图;

图2是本发明一实施例中利用多个加法器、多个除法器及多个乘法器进行协方差计算的方法流程示意图;

图3是本发明另一实施例的用于计算序列数据的协方差的方法流程示意图;

图4是本发明一实施例的顶层结构示意图;

图5是本发明一实施例的时序图;

图6是本发明一实施例中控制过程的流程示意图;

图7是本发明一实施例中的数据缓冲器的结构示意图;

图8是本发明一实施例中的通用电路的结构示意图;

图9是本发明一实施例中的加法器阵列的结构示意图;

图10是本发明一实施例的用于计算序列数据的协方差的装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

图1是本发明一实施例的用于计算序列数据的协方差的方法的流程示意图。如图1所示,一些实施例的用于计算序列数据的协方差的方法,可包括:

步骤s110:接收第一序列的第一数据和第二序列的第二数据,并将所述第一数据和所述第二数据分别存储至第一缓冲器和第二缓冲器;

步骤s120:在所述第一缓冲器中的数据的个数和所述第二缓冲器中的数据的个数均大于或等于滑动窗口的大小的情况下,根据所述第一缓冲器中所述滑动窗口所在位置从所述第一缓冲器读取数量为所述滑动窗口的大小的所述第一序列的数据,根据所述第二缓冲器中所述滑动窗口所在位置从所述第二缓冲器读取数量为所述滑动窗口的大小的所述第二序列的数据;

步骤s130:计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,用于分析包含所述第一数据的所述第一序列和包含所述第二数据的所述第二序列数据的相关性。

在上述步骤s110中,该第一序列和该第二序列可以是各种包含按一定顺序排列的数据元素的序列,例如,时间序列、空间序列等,可以由外部设备(例如传感器)实时传送过来,每个周期可以传送一个数据。该第一数据中的“第一”并不限定为该第一序列中的首个数据,也不限定为本方法接收的首个数据,其仅用于与后续所述的第三数据相区别,用于表明第一数据和第三数据在该第一序列中位置(例如时间位置、空间位置等)不同。该第二数据中的“第二”并不限定为该第二序列中的首个数据或第二个数据,也不限定为本方法接收的首个数据或第二个数据,其仅用于与后续所述的第四数据相区别,用于表明第二数据和第四数据在该第二序列中位置(例如时间位置、空间位置等)不同。

在一些情况下,在接收到该第一数据/该第二数据之前,可以已经接收了一个或多个第三数据/第四数据,并且可以已经分别存储至该第一缓冲器/第二缓冲器。包括该第一数据在内的第一序列的数据和包括该第二数据在内的第二序列的数据一般分别按该第一缓冲器和该第二缓冲器的存储顺序进行存储,特殊情况下,可以不按缓冲器的存储顺序进行存储,但此时,需要记录每个数据的存储位置,便于后续按滑动窗口读取数据。该第一缓冲器和该第二缓冲器可以是各种顺序存储的缓冲器,例如,环形缓冲器,环形缓冲器的存储空间可以重复利用,以此可以节省存储资源。

在上述步骤s120中,该第一缓冲器一般仅用于存储上述第一序列的数据,该第二缓冲器一般仅用于存储上述第二序列的数据,特殊情况下,该第一缓冲器/该第二缓冲器可以同时用于存储其他数据,但此时需要标记各数据的存储位置,便于后续按滑动窗口读取数据。

该滑动窗口的大小可以根据需要进行设定。该滑动窗口可以用于标识对存储至该第一缓冲器和该第二缓冲器的数据进行协方差计算的数据范围的宽度,该数据范围的宽度可以根据存储先后顺序或位置顺序界定。该滑动窗口可以根据设定的滑动步长进行滑动,从而在不同数据存储位置选取一定数据范围的宽度的数据。在该滑动窗口的初始位置只要满足能够被数据填充满即可,例如,可以根据最早存储至该第一缓冲器的数据的位置确定该滑动窗口的初始位置,具体地,例如,可以覆盖该第一缓冲器中数据序列的第一个数据至存储次序为该滑动窗口的大小的数据之间的数据范围。

在上述步骤s130中,用于进行协方差计算的第一序列的数据的个数和第二序列的数据的个数一般相等。可以根据统计学中的协方差公式计算第一序列的数据(数据流中的数据段)和第二序列的数据(数据流中的数据段)的协方差。协方差的计算结果可以实时输出,或暂时存储起来待需要时再传输出去。根据两个数据段的协方差,可以判断该两个数据段的相关性。

本实施例中,通过将串行传输的第一序列和第二序列的数据存储至各自的缓冲器,然后根据设置的滑动窗口读取两个缓冲器中的序列数据,能够以并行方式计算两列序列数据的协方差。而且,在两个序列的新数据存储至各自的缓冲器时,能够通过灵活地移动滑动窗口来选择缓冲器中的新数据,实现对两个序列的新数据进行协方差计算。如此一来,通过本方案能够针对实时接收的两个序列的数据进行协方差计算,从而提高序列数据的协方差计算处理的实时性。

在一些实施例中,上述步骤s130,即,计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差的具体实施方式,可包括:

根据所述滑动窗口的大小,利用多个加法器、多个除法器及多个乘法器计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差。

具体地,可以利用多个加法器进行累加计算或其他求和计算,利用多个乘法器可以对两个序列的数据一一对应地进行乘积计算,利用除法器可以进行求平均。

本实施例中,利用多个加法器、多个除法器及多个乘法器可以分级、并行地对两个序列的多个数据进行计算,提高协方差计算的速度,从而提高协方差计算的实时性。

图2是本发明一实施例中利用多个加法器、多个除法器及多个乘法器进行协方差计算的方法流程示意图。如图2所示,上述步骤s130的具体实施方式,即,根据所述滑动窗口的大小,利用多个加法器、多个除法器及多个乘法器计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,可包括:

步骤s131:利用第一加法器阵列和第一除法器,根据所述滑动窗口的大小对读取的数量为所述滑动窗口的大小的所述第一序列的数据进行计算,得到包括所述第一数据的所述第一序列的数据的期望值;利用第二加法器阵列和第二除法器,根据所述滑动窗口的大小对读取的数量为所述滑动窗口的大小的所述第二序列的数据进行计算,得到包括所述第二数据的所述第二序列的数据的期望值;利用第一乘法器、第三加法器阵列及第三除法器,根据所述滑动窗口的大小对读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据进行计算,得到包括所述第一数据的所述第一序列的数据和包括所述第二数据的所述第二序列的数据的乘积的期望值;

步骤s132:利用第二乘法器对包括所述第一数据的所述第一序列的数据的期望值和包括所述第二数据的所述第二序列的数据的期望值进行乘积计算;

步骤s133:利用第一加法器对包括所述的乘积的期望值和乘积计算结果进行加法计算,得到包括所述第一数据的所述第一序列的数据和包括所述第二数据的所述第二序列的数据的协方差;

其中,所述多个加法器包括所述第一加法器阵列中各加法器、所述第二加法器阵列中各加法器、所述第三加法器阵列中各加法器、及所述第一加法器,所述多个除法器包括所述第一除法器、所述第二除法器、及所述第三除法器,所述多个乘法器包括所述第一乘法器和所述第二乘法器。

在上述步骤s131中,可以利用第一加法器阵列对读取的数量为所述滑动窗口的大小的所述第一序列的数据进行累加计算,利用第一除法器可以将第一序列的累加计算的结果除以所述滑动窗口的大小,得到第一序列的数据的期望值。可以利用第二加法器阵列对读取的数量为所述滑动窗口的大小的所述第二序列的数据进行累加计算,利用第二除法器将第二序列的累加计算的结果除以所述滑动窗口的大小,得到第二序列的数据的期望值。可以利用多个第一乘法器可以对第一序列的数据和第二序列的数据一一对应地进行乘积计算,利用第三加法器阵列可以对乘积计算的结果进行累加计算,利用第三除法器可以对累加计算的结果除以滑动窗口的大小得到两个序列的数据乘积的期望值。第一加法器阵列、第二加法器阵列、第三加法器阵列的结构可以相同或类似。

本实施例中,在协方差计算过程中,利用加法器阵列和乘法器可以更好地并行计算,从而进一步提高协方差计算的速度。

在一些实施例中,所述第一加法器阵列、所述第二加法器阵列及所述第三加法器阵列中的至少一个包括多个级加法器,前一级加法器的个数是后一级加法器的个数的两倍。本实施例中,通过在加法器阵列中设置多级加法器,能够更便于协方差计算。

图3是本发明另一实施例的用于计算序列数据的协方差的方法流程示意图。如图3所示,图1所示的用于计算序列数据的协方差的方法,还可包括:

步骤s140:接收所述第一序列的第三数据和所述第二序列的第四数据,并将所述第三数据和所述第四数据分别存储至所述第一缓冲器和所述第二缓冲器;

步骤s150:将所述第一缓冲器中所述滑动窗口向所述第三数据的存储位置移动滑动步长;将将所述第二缓冲器中所述滑动窗口向所述第四数据的存储位置移动所述滑动步长;

步骤s160:根据所述第一缓冲器中移动所述滑动步长后的所述滑动窗口所在位置重新从所述第一缓冲器读取数量为所述滑动窗口的大小的所述第一序列的数据,根据所述第二缓冲器中移动所述滑动步长后的所述滑动窗口所在位置重新从所述第二缓冲器读取数量为所述滑动窗口的大小的所述第二序列的数据;

步骤s170:计算重新读取的数量为所述滑动窗口的大小的所述第一序列的数据和重新读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,用于分析包含所述第三数据的所述第一序列和包含所述第四数据的所述第二序列数据的相关性。

在上述步骤s140中,该第三数据中的“第三”用于与前数的第一数据相区分,用于表示二者在该第一序列中位置(例如时间位置、空间位置等)不同。而且,该第三数据并不限定为紧接着前述的第一数据而产生或到来的数据,换言之,该第二数据和前述的第一数据之间可以间隔一个或多个上述数据序列的数据。类似地,该第四数据中的“第四”用于与前数的第二数据相区分,用于表示二者在该第二序列中位置(例如时间位置、空间位置等)不同。而且,该第四数据并不限定为紧接着前述的第二数据而产生或到来的数据,换言之,该第四数据和前述的第二数据之间可以间隔一个或多个上述数据序列的数据。此外,类似地,该第一数据和该第二数据也不必是紧邻接收的两个数据,该第三数据和第四数据也不必是紧邻接收的两个数据。

在上述步骤s150中,该滑动步长可以根据需要设定,例如,可以设置为1、2等。在滑动步长为1的情况下,每次移动一个数据,使得滑动窗口中增加一个新数据,减少一个最旧的数据。通过将滑动窗口向所述第三数据或所述第四数据的存储位置(最新存储的数据的位置)移动滑动步长,可以更实时地对最新接收的序列数据进行协方差计算。

述步骤s140至步骤s170可以不断重复进行,从而对不断、实时接收的第一序列和第二序列的数据进行协方差计算,例如,每新接收一个第一序列的新数据和第二序列的新数据,可以输出两个序列对应的协方差计算结果。

本实施例中,通过移动滑动窗口来使滑动窗口包含新接收的第一序列和第二序列数据,能够更加实时地对序列数据进行协方差处理。

在一些实施例中,上述步骤s130,即,计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差的具体实施方式,可包括:

计算并记录读取的数量为所述滑动窗口的大小的所述第一序列的数据中排除最早存储至所述第一缓冲器且数量为所述滑动步长的数据后的剩余数据之和,计算并记录读取的数量为所述滑动窗口的大小的所述第二序列的数据中排除最早存储至所述第二缓冲器且数量为所述滑动步长的数据后的剩余数据之和。

上述步骤s170,即,计算重新读取的数量为所述滑动窗口的大小的所述第一序列的数据和重新读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差的具体实施方式,可包括:

利用记录的所述的排除最早存储至所述第一缓冲器且数量为所述滑动步长的数据后的剩余数据之和、记录的所述的排除最早存储至所述第二缓冲器且数量为所述滑动步长的数据后的剩余数据之和、读取的最晚存储至所述第一缓冲器且数量为所述滑动步长的数据、及读取的最晚存储至所述第二缓冲器且数量为所述滑动步长的数据,计算重新读取的数量为所述滑动窗口的大小的所述第一序列的数据和重新读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差。

例如,第一序列x的某一滑动窗口(滑动窗口的大小为winsize)包括数据x(0)、x(1)、x(2)、x(3)、...、x(winsize-1),其中,数据x(0)为该滑动窗口内最早存储至第一缓冲器的数据,数据x(winsize-1)为最晚存储值第一缓冲器的数据。第二序列y的滑动窗口包括数据y(0)、y(1)、y(2)、y(3)、...、y(winsize-1),其中,数据y(0)为该滑动窗口内最早存储至第二缓冲器的数据,数据y(winsize-1)为最晚存储值第二缓冲器的数据。在计算第一序列的数据x(0)、x(1)、x(2)、x(3)、...、x(winsize-1)和第二序列的数据y(0)、y(1)、y(2)、y(3)、...、y(winsize-1)时,其中,在滑动步长为1的情况下,在累加计算第一序列x的数据时,可以从x(winsize-1)累加至x(0),当累加计算出x(winsize-1)至x(1)之和时,可以记录下来,然后再累加上x(0),类似地,可以累加计算出并记录x(winsize-1)至x(1)。当接收第一序列的数据x(winsize)并存储至第一缓冲器,接收第二序列的数据y(winsize)并存储至第二缓冲器时,可以将第一序列x中的滑动窗口向数据x(winsize)移动滑动步长,即,一个数据单位,移动后的滑动窗口包括第一序列的数据x(1)、x(2)、x(3)、...、x(winsize),类似地,移动后的滑动窗口包括第二序列的数据y(1)、y(2)、y(3)、...、y(winsize),在计算第一序列中移动后的滑动窗口和第二序列中移动后的滑动窗口的协方差的过程中,在累加计算数据x(1)、x(2)、x(3)、...、x(winsize)时,可以利用记录的x(1)、x(2)、x(3)、...、x(winsize-1)之和再加上x(winsize)得到新滑动窗口中的数据之和,在累加计算数据y(1)、y(2)、y(3)、...、y(winsize)时,可以利用记录的数据y(1)、y(2)、y(3)、...、y(winsize-1)之和再加上数据y(winsize)得到新滑动窗口中的数据之和。

本实施例中,通过将一部分数据累加并记录起来用于滑动后窗口内的数据的协方差计算,能够节省计算所花费的时间,从而进一步提高协方差计算的速度。

在一些实施例中,所述第一缓冲器和/或所述第二缓冲器为环形缓冲器。利用环形缓冲器可以重复利用存储空间,减少存储空间开销。

为了使本领域技术人员更好地了解本发明,下面将以一具体实施例说明本发明的实施过程。

图4是本发明一实施例的顶层结构示意图。如图4所示,在一些具体实施例中,本发明实施例的用于计算序列数据的协方差的方法所使用装置tscov的顶层结构可包括第一数据缓冲器、第二数据缓冲器、控制逻辑、数据通路、状态寄存器等。该第一数据缓冲器可以用于暂存第一序列x(时间序列)的数据,该第二数据缓冲器可以用于暂存第二序列y(时间序列)的数据。控制逻辑可以用于控制该第一数据缓冲器和该第二数据缓冲器的数据存取。该数据通路可以根据时间序列x的数据和序列y的数据进行协方差计算。

图5是本发明一实施例的时序图。如图5所示,其中,标1的位置表示复位信号tscov_rstn有效,所有内部逻辑和部分端口信号恢复至事先约定的状态,一切逻辑准备就绪等待新的计算开启。标2的位置表示使能信号tscov_enable置位,正式开启新计算。标3的位置表示时钟上升沿来临,内部逻辑采样计算所需要的参数滑动窗口大小winsize(第一参数tscov_para0)和滑动步长stride(第二参数tscov_para1)。标4的位置表示时钟上升沿来临,内部逻辑采样两个输入时间序列(第二序列的输入信号tscov_tsin1和第一序列的输入信号tscov_tsin0)的第一个数据元素,之后每个时钟数据更新一次。标5的位置表示第一个计算结果的信号tscov_tsout输出,之后在输入数据连续的情况下保证每个时钟输出一个结果。

图6是本发明一实施例中控制过程的流程示意图。参照图4至图6,在一些具体实施例中,用于计算序列数据的协方差的方法所需的控制过程可包括:

步骤s1:在系统复位时,内部逻辑和寄存器恢复至初始态,等待时间序列写入。

步骤s2:在参数读取时,内部逻辑采样计算时间序列协方差所需的参数,即滑动窗口大小winsize和滑动步长stride。

步骤s3:在数据缓冲器写入时,将第一时间序列x和第二时间序列y写入各自的数据缓冲器中,同时更新状态寄存器。

步骤s4:在协方差计算时,根据滑动窗口大小winsize和滑动步长stride将两个数据缓冲器中的时间序列送入数据通路中,同时更新状态寄存器。

步骤s5:在计算完毕后,各寄存器复位,等待下一次计算开始。

具体地,例如,对于第一时间序列x(x(0),x(1),x(2),x(3),...,x(n-1))和第二时间序列y(y(0),y(1),y(2),y(3),...,y(n-1))进行实时协方差计算时,其中n可以表示数据序号。以滑动窗的形式,计算每一滑动窗内第一时间序列x的子序列和第二时间序列y的子序列之间的协方差,结果可为z(z(0),z(1),z(2),z(3),...,z(m-1)),其中m可为滑动窗口的个数。协方差计算结果z仍旧为时间序列,但和输入序列可能不等长。其中,所需参数可包括滑动窗口的大小winsize、滑动窗口之间的滑动步长stride,计算代码例如可包括:

解时间序列协方差的硬件结构,支持任意窗口和任意步长的时间序列协方差求解,其硬件结构可包括:数据缓冲器,所述数据缓冲器用于时间序列的缓存;状态寄存器,所述状态寄存器用于指示数据缓冲器中时间序列的存储情况;控制逻辑,所述控制逻辑实现了数据缓冲器的读取、状态寄存器的更新以及数据通路的控制;数据通路,所述数据通路实现了时间序列协方差的快速求解。

图7是本发明一实施例中的数据缓冲器的结构示意图。如图7所示,其中,x[k]表示序列x的第k个数据元素的值(序列值),x[n-n+1]表示序列x的第n-n+1个数据元素的值,即,当前窗口的第一个值,x[n]表示序列x的第n个数据元素的值,即,当前窗口的最后一个值。数据缓冲器的实现形式可以为环形缓冲器,所述环形缓冲器301可通过移动指示寄存器302的单元的指针来替代移动实际的数据,并且读写指针分离。为了满足硬件的效率和速度,环形缓冲器301实现了整个抽样窗的移动,只有最近的n个时间序列值能够保存在一个n单元的环形缓冲器中,地址指针在绕回底部地址(开始位置)之前可以以升序环绕。相较于移动所有数据,环形缓冲器使得系统的寄存器翻转次数最少,进而降低系统功耗。

所述的状态寄存器,如图4所示,用于指示数据缓冲器的使用情况,当数据缓冲器中的时间序列值有效时,其对应地址上的状态寄存器值可为1;当该时间序列值运算完毕后,其对应地址上的状态寄存器值可为0。

图8是本发明一实施例中的通用电路的结构示意图。如图8所示,数据通路可由加法器、乘法器和除法器组成。该数据通路可以以流水线的形式对时间序列x、y进行处理得到协方差计算结果的序列z。其流水线处理过程可包括:

流水线第一级可包括2个加法器阵列a1、a2和1个乘法器m0。其中,2个加法器阵列a1、a2分别用于计算该滑动窗下时间序列x、y的累加和,即利用公式tx=tx+x(j)和ty=ty+y(j)(tx和ty分别表示时间序列x、y的累加符号)进行累加。乘法器m0用于计算时间序列x、y对应元素x(j)、y(j)的乘积,即x(j)*y(j)。

流水线第二级可包括1个加法器阵列a0和2个除法器d1、d2。其中,加法器阵列a0可用于累加流水线第一级中时间序列x、y对应元素的乘积,即txy=txy+x(j)*y(j)(txy标识乘积累加符号)。2个除法器d1、d2实现流水线第一级中时间序列x、y的累加和对窗口长度的除法,即时间序列x的期望ex=tx/winsize和时间序列y的期望ey=ty/winsize(其中winsize表示窗口的大小)。

流水线第三级可包括1个除法器d0和1个乘法器m1。其中,除法器d0用于流水线第二级中txy对窗口长度的除法,即乘积的期望exy=txy/winsize。乘法器a1用于实现流水线第二级中ex和ey的乘法操作,即ex*ey。

流水线第四级可包括1个加法器a3。该加法器可用于实现流水线第三级中exy和ex*ey的减法,即协方差计算结果z(i)=exy-ex*ey。

图9是本发明一实施例中的加法器阵列的结构示意图。上述加法器阵列a0,a1和a2的具体结构如图9所示,每个加法器阵列可包含max_win-1个加法器。其中,max_win为支持的最大滑动窗口。以max_win等于16为例,即可支持的最大滑动窗口为16,则加法器阵列的第一级有8个加法器,第二级有4个,第三级有2个,第四级有1个,以此类推。

在一些实施例中,可以利用专用计算技术高效解决特定领域的海量数据处理问题成为可能。相较于传统的计算模式,以专用的数据处理架构来处理时间序列无疑在性能和功耗上均能获得巨大的提升。以此,求解时间序列协方差的硬件结构能够高效率地对时间序列进行实时处理。

基于与图1所示的用于计算序列数据的协方差的方法相同的发明构思,本发明实施例还提供了一种用于计算序列数据的协方差的装置,如下面实施例所述。由于该用于计算序列数据的协方差的装置解决问题的原理与用于计算序列数据的协方差的方法相似,因此该用于计算序列数据的协方差的装置的实施可以参见用于计算序列数据的协方差的方法的实施,重复之处不再赘述。

图10是本发明一实施例的用于计算序列数据的协方差的装置的结构示意图。如图10所示,一些实施例的用于计算序列数据的协方差的装置,可包括:存储控制单元210、读取控制单元220及协方差计算单元230,上述各单元顺序连接。

存储控制单元210,用于接收第一序列的第一数据和第二序列的第二数据,并将所述第一数据和所述第二数据分别存储至第一缓冲器和第二缓冲器;

读取控制单元220,用于在所述第一缓冲器中的数据的个数和所述第二缓冲器中的数据的个数均大于或等于滑动窗口的大小的情况下,根据所述第一缓冲器中所述滑动窗口所在位置从所述第一缓冲器读取数量为所述滑动窗口的大小的所述第一序列的数据,根据所述第二缓冲器中所述滑动窗口所在位置从所述第二缓冲器读取数量为所述滑动窗口的大小的所述第二序列的数据;

协方差计算单元230,用于计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,用于分析包含所述第一数据的所述第一序列和包含所述第二数据的所述第二序列数据的相关性。

在一些实施例中,协方差计算单元230,可包括:

协方差计算模块,用于根据所述滑动窗口的大小,利用多个加法器、多个除法器及多个乘法器计算读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差。

在一些实施例中,协方差计算模块,可包括:

第一计算模块,用于利用第一加法器阵列和第一除法器,根据所述滑动窗口的大小对读取的数量为所述滑动窗口的大小的所述第一序列的数据进行计算,得到包括所述第一数据的所述第一序列的数据的期望值;利用第二加法器阵列和第二除法器,根据所述滑动窗口的大小对读取的数量为所述滑动窗口的大小的所述第二序列的数据进行计算,得到包括所述第二数据的所述第二序列的数据的期望值;利用第一乘法器、第三加法器阵列及第三除法器,根据所述滑动窗口的大小对读取的数量为所述滑动窗口的大小的所述第一序列的数据和读取的数量为所述滑动窗口的大小的所述第二序列的数据进行计算,得到包括所述第一数据的所述第一序列的数据和包括所述第二数据的所述第二序列的数据的乘积的期望值;

第二计算模块,用于利用第二乘法器对包括所述第一数据的所述第一序列的数据的期望值和包括所述第二数据的所述第二序列的数据的期望值进行乘积计算;

第三计算模块,用于利用第一加法器对包括所述的乘积的期望值和乘积计算结果进行加法计算,得到包括所述第一数据的所述第一序列的数据和包括所述第二数据的所述第二序列的数据的协方差;

其中,所述多个加法器包括所述第一加法器阵列中各加法器、所述第二加法器阵列中各加法器、所述第三加法器阵列中各加法器、及所述第一加法器,所述多个除法器包括所述第一除法器、所述第二除法器、及所述第三除法器,所述多个乘法器包括所述第一乘法器和所述第二乘法器。

在一些实施例中,所述第一加法器阵列、所述第二加法器阵列及所述第三加法器阵列中的至少一个包括多个级加法器,前一级加法器的个数是后一级加法器的个数的两倍。

在一些实施例中,图10所示的计算序列数据的协方差的方法还可包括窗口移动模块。

存储控制单元210,还可用于接收所述第一序列的第三数据和所述第二序列的第四数据,并将所述第三数据和所述第四数据分别存储至所述第一缓冲器和所述第二缓冲器;

窗口移动模块,用于将所述第一缓冲器中所述滑动窗口向所述第三数据的存储位置移动滑动步长;将将所述第二缓冲器中所述滑动窗口向所述第四数据的存储位置移动所述滑动步长;

读取控制单元220,还可用于根据所述第一缓冲器中移动所述滑动步长后的所述滑动窗口所在位置重新从所述第一缓冲器读取数量为所述滑动窗口的大小的所述第一序列的数据,根据所述第二缓冲器中移动所述滑动步长后的所述滑动窗口所在位置重新从所述第二缓冲器读取数量为所述滑动窗口的大小的所述第二序列的数据;

协方差计算单元230,还可用于计算重新读取的数量为所述滑动窗口的大小的所述第一序列的数据和重新读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差,用于分析包含所述第三数据的所述第一序列和包含所述第四数据的所述第二序列数据的相关性。

在一些实施例中,协方差计算单元230,可包括:

累加和计算及存储模块,用于计算并记录读取的数量为所述滑动窗口的大小的所述第一序列的数据中排除最早存储至所述第一缓冲器且数量为所述滑动步长的数据后的剩余数据之和,计算并记录读取的数量为所述滑动窗口的大小的所述第二序列的数据中排除最早存储至所述第二缓冲器且数量为所述滑动步长的数据后的剩余数据之和;

协方差计算单元230,可包括:

累加数据读取模块,用于利用记录的所述的排除最早存储至所述第一缓冲器且数量为所述滑动步长的数据后的剩余数据之和、记录的所述的排除最早存储至所述第二缓冲器且数量为所述滑动步长的数据后的剩余数据之和、读取的最晚存储至所述第一缓冲器且数量为所述滑动步长的数据、及读取的最晚存储至所述第二缓冲器且数量为所述滑动步长的数据,计算重新读取的数量为所述滑动窗口的大小的所述第一序列的数据和重新读取的数量为所述滑动窗口的大小的所述第二序列的数据的协方差。

在一些实施例中,所述第一缓冲器和/或所述第二缓冲器为环形缓冲器。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述实施例所述方法的步骤。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述实施例所述方法的步骤。

综上所述,本发明实施例的用于计算序列数据的协方差的方法、用于计算序列数据的协方差的装置、计算机设备及计算机可读存储介质,通过将串行传输的第一序列和第二序列的数据存储至各自的缓冲器,然后根据设置的滑动窗口读取两个缓冲器中的序列数据,能够以并行方式计算两列序列数据的协方差。而且,在两个序列的新数据存储至各自的缓冲器时,能够通过灵活地移动滑动窗口来选择缓冲器中的新数据,实现对两个序列的新数据进行协方差计算。如此一来,通过本方案能够针对实时接收的两个序列的数据进行协方差计算,从而提高序列数据的协方差计算处理的实时性。

在本说明书的描述中,参考术语“一个实施例”、“一个具体实施例”、“一些实施例”、“例如”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。各实施例中涉及的步骤顺序用于示意性说明本发明的实施,其中的步骤顺序不作限定,可根据需要作适当调整。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1