主要内容

matlab.tall.movingWindow

运用移动窗口函数的数据块

自从R2019a

描述

例子

助教= matlab.tall.movingWindow (fcn,窗口,tX)应用函数fcn一旦每个窗口的窗口移动的第一个维度tX。输出助教的垂直连接应用的结果吗fcn每一个窗口。

例子

(助教,结核病,……)= matlab.tall.movingWindow (fcn,窗口,tX,,……),在那里fcn是一个函数返回多个输出的处理,返回数组助教,结核病,…,每一个对应的一个输出参数fcn。的输入fcn窗口的数据参数吗tX,泰,…。这个语法有这些要求:

  • fcn必须返回相同数量的输出和要求matlab.tall.movingWindow

  • 每个输出的fcn必须是相同的类型作为第一个数据输入tX

  • 所有输出助教,结核病,…必须有相同的高度。

(___)= matlab.tall.movingWindow (___,名称,值)与一个或多个名称-值对参数指定附加选项使用任何以前的语法。例如,调整步长之间的窗口,您可以指定“步”和一个标量。或改变端点的治疗没有足够的元素来完成一个窗口中,您可以指定“端点”和一个有效的选项(“缩水”,“丢弃”或数字填充值)。

例子

全部折叠

使用matlab.tall.movingWindow计算移动平均的航班抵达和起飞延误。

创建一个数据存储airlinesmall.csv数据集转换成一个高大的数组。数据包含的信息到达和离开的时间我们的航班。提取ArrDelayDepDelay变量向量的航班延误,创建一个高大数组包含延迟作为单独的列。

varnames = {“ArrDelay”,“DepDelay”};ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”,“SelectedVariableNames”,varnames);tt =高(ds);tX = (tt。ArrDelaytt.DepDelay]
tX) =(高双矩阵8 12 8 1 21 20 13 12 4 1 59 63 3 2 11 1::::

使用matlab.tall.movingWindow计算数据的移动值在第一维度。使用一个窗口大小为5000。

fcn = @ (x)中位数(x, 1,“omitnan”);5000年tA = matlab.tall.movingWindow (fcn, tX)
tA = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :

收集结果的独特的行到内存中。

tA =收集(独特的助教,“行”))
评估高表达式使用当地的MATLAB会话:通过1 2:在1.2秒完成,通过2 2:在36秒评价完成37秒完成
tA =31日×2-4.0000 -2.0000 -3.5000 -2.0000 -3.0000 -2.0000 -3.0000 -1.5000 -3.0000 -1.0000 -3.0000 -0.5000 -3.0000 0 0 -2.5000 -1.0000 -2.5000 -2.0000 -1.0000⋮

使用matlab.tall.movingWindow应用一个函数有多个输出窗口的数据。

创建一个高大数组的内存中随机矩阵。

X =兰德(1000 5);tX (X) =高
tX = 1000 x5高双矩阵0.8147 0.6312 0.7449 0.3796 0.4271 0.9058 0.3551 0.8923 0.3191 0.9554 0.1270 0.9970 0.2426 0.9861 0.7242 0.9134 0.2242 0.1296 0.7182 0.5809 0.6324 0.6525 0.2251 0.4132 0.5403 0.0975 0.6050 0.3500 0.0986 0.7054 0.2785 0.3872 0.2871 0.7346 0.0050 0.5469 0.1422 0.9275 0.6373 0.7825::::::::::

创建一个函数,发现之和,意思是,中位数,和每个窗口模式数据的维度。每个输出需要有相同的尺寸在第一维度,但是其他尺寸可以有不同的大小。为每个窗口的数据,计算总和产生一个标量,而另一个计算产生1——- - - - - -N向量。

保存功能在你的本地工作区。

函数[年代,mn, mdn, md] = mystats S (X) =总和(X, 2 [1]);mn =意味着(X, 1);中数= (X, 1)中位数;md =模式(X, 1);结束

注意:这个函数包含在示例作为本地函数。

使用matlab.tall.movingWindow应用mystats函数数据窗口大小为250。指定四个输出参数返回的所有输出mystats。使用“端点”名称-值对丢弃不完整的windows。

[tS, tmn, tmdn, tmd] = matlab.tall。tX movingWindow (@mystats, 250年,“端点”,“丢弃”)
tS = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : : tmn = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : tmdn = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : tmd = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
函数[年代,mn, mdn, md] = mystats S (X) =总和(X, 2 [1]);mn =意味着(X, 1);中数= (X, 1)中位数;md =模式(X, 1);结束

输入参数

全部折叠

应用窗口函数,指定为一个函数处理或匿名函数。每个输出的fcn必须是相同的类型作为第一个输入tX。您可以使用“OutputsLike”选择返回输出不同的数据类型。

一般功能的签名fcn

(a, b, c,……)= fcn(x, y, z, ...)
fcn必须满足这些要求:

  1. 输入参数——输入(x, y, z,……)是装入内存的数据块。从各自的提取数据产生的块高输入数组(tX,泰,tZ,…)。输入(x, y, z,……)满足这些属性:

    • 所有的输入(x, y, z,……)有相同的尺寸在第一维度。

    • 的数据块(x, y, z,……)来自同一指数在高维度,假设高数组nonsingleton在高维度。例如,如果tXnonsingleton在高维度,那么第一组块可以吗x = tX (1:20000:)y =泰(1:20000:)

    • 当第一个维度的(tX,泰,tZ,…)有一个大小1,相应的块(x, y, z,……)包括高数组中的所有数据。

    • 应用fcn必须导致减少输入数据的一个标量或一片数组身高1。

      当输入一个矩阵,一天数组,表,或时间表,应用fcn必须减少导致的输入数据在每一个列或变量。

  2. 输出参数——输出(a, b, c,……)是装入内存块,发送给相应的输出(助教、结核,tC,…)。输出(a, b, c,……)满足这些属性:

    • 所有的输出(a, b, c,……)必须具有相同的大小在第一维度。

    • 所有的输出(a, b, c,……)垂直连接有各自的结果之前的电话fcn

    • 所有的输出(a, b, c,……)被发送到相同的索引在第一维度在各自目的地输出数组。

  3. 功能规则- - - - - -fcn必须满足功能规则:

    • F ([inputs1;inputs2]) = = (F (inputs1);F (inputs2)):应用功能连接的输入应该是一样的应用函数分别输入然后连接结果。

例如,这个函数计算元素的平均值和标准偏差在一个窗口并返回两个数组输出:

函数(mv, sd) = movstats (tX) mv =意味着(tX, 1 ' omitnan ');sd =性病(tX, 1 ' omitnan ');结束
保存这个函数访问的文件夹之后,您可以调用该函数的窗口大小5使用这个命令:
(助教、结核病)= matlab.tall.movingWindow (@movstats 5 tX)

例子:tA = matlab.tall.movingWindow (@ (x)性病(x, 1,“omitnan”), tX)指定一个匿名函数来计算每个窗口的标准偏差,忽略年代。

例子:tA = matlab.tall.movingWindow (@mean 3 tX)指定一个函数处理@mean计算每个三元素窗口的平均值。

数据类型:function_handle

窗口大小,指定为一个正整数标量或双元素行向量(NB NF)

  • 如果窗口是一个标量,那么:

    • 当窗口大小奇怪的,每个窗口都是集中在中相应的元素数据。

      插图的窗口大小的三个向量与六个元素。有六个窗户,第一个和最后一个窗口有两个元素,每个窗口是在数据集中在相应的元素。

    • 当窗口大小甚至,每个窗口集中有关当前和以前的元素。

      插图的窗口大小的四个向量与六个元素。第一个窗口有两个元素,第二个有三个元素,接下来的三个窗口有四个元素,最后一个窗口有三个元素。每个窗口集中有关当前和以前的元素。

  • 如果窗口是一个向量(NB NF)包括前面,那么窗口元素、当前元素和下一个NF输入的元素。

    说明[2 2]窗口大小的矢量与六个元素。第一个窗口有三个元素,第二个有四个元素,接下来的两个窗户有五个元素,倒数第二个窗口有四个元素,和最后一个窗口有三个元素。每个窗口包括两个之前的值(如果可能的话),当前值,下两个值(如果可能的话)。

默认情况下,窗口大小自动截断端点时没有足够的元素可用来填补这个窗口。窗口以这种方式被截断时,功能操作只能在填满窗口的元素。你可以改变这个行为端点名称-值对。

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

输入数组,指定为独立参数的标量、向量,矩阵,多维数组,表,或时间表。输入数组可以高或内存中的数组。输入数组作为输入变换函数fcn。每个输入数组tX,泰,…必须有相同的高度。

名称-值参数

指定可选的双参数作为Name1 = Value1,…,以=家,在那里的名字参数名称和吗价值相应的价值。名称-值参数必须出现在其他参数,但对的顺序无关紧要。

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:tA = matlab.tall。movingWindow (@myFcn窗口、tX跨步,2)

步长之间的窗口,指定为逗号分隔组成的“步”和一个正整数标量。后fcn作用于一个窗口的数据,计算提出的“步”值在操作之前下一个窗口。增加的价值“步”从1的默认值是一样的输出的大小减少挑选其他元素,或每第三个元素,等等。

默认情况下,价值的“步”1,所以每个窗口集中在输入每个元素。举例来说,这里是一个移动的总和计算的窗口大小3操作的向量(1 2 3 4 5 6)”:

插图的移动和与六个向量元素利用步的值为1。共有六个窗户被用于计算,所以有6个元素的输出。

如果该值的“步”2,然后计算每个窗口的变化,以每秒钟元素输入(1、3、5)。移动和现在返回三部分和而不是六:

说明移动和与六个向量元素的利用一个跨步值2。一共有三个窗口用于计算,所以有三个元素的输出。

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

方法治疗前导和尾随窗口,指定为逗号分隔组成的“端点”其中一个表中的值。

开始和结束的一个窗口的计算,被操作的窗口的元素是不完整的。的“端点”选项指定如何对待这些不完整的窗口。

“端点”价值 描述 例如:移动和

“缩水”

缩小窗口大小的端点附近的输入只包括现有元素。

说明一个移动的总和与六个向量元素。六个窗口中使用的移动和,与windows在端点包括两个元素和室内包括三个元素。

“丢弃”

不输出任何窗户不完全重叠的结果与现有的元素。

说明一个移动的总和与六个向量元素。四个窗口是用于移动总和,所有窗口包括三个元素。

数字或逻辑填充的值

替代nonexisting元素指定的数字或逻辑值。

  • 填充的值必须相同的类型tX

  • 填充值在第一维的大小必须等于1,和其他维度的大小必须匹配tX

说明一个移动的总和与六个向量元素。六个窗口中使用的移动和,与windows端点包括两个元素+满值。室内的窗户有三个元素。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串

样机的输出数组,指定为逗号分隔组成的“OutputsLike”和一个包含原型阵列单元阵列。当你指定“OutputsLike”,输出数组助教,结核病,…返回的matlab.tall.movingWindow有相同的数据类型和属性指定的原型数组{PA、PB,…}。您必须指定“OutputsLike”每当一个输出数组的数据类型不同的输入数组。如果您指定“OutputsLike”,那么你必须指定一个原型为每个输出数组。

例子:tA = matlab.tall.movingWindow (…tX, OutputsLike, {int8 (1)});,在那里tX是一个双精度高的数组,返回助教作为int8而不是

数据类型:细胞

输出参数

全部折叠

输出数组,返回标量、向量,矩阵或多维数组。如果任何输入matlab.tall.movingWindow高,那么所有输出参数也高。否则,输出参数都是内存中的数组。

  • 大小和输出数组的数据类型取决于指定的窗口函数fcn

  • 输出数组助教,结核病,…都有相同的高度,这取决于的价值“步”“端点”。默认输出数组作为输入数组大小相同。

  • 一般来说,输出助教,结核病,…都必须具有相同的数据类型作为第一个输入tX。然而,您可以指定“OutputsLike”返回不同的数据类型。在这种情况下,输入数组tX,泰,…是空的,或者什么时候“端点”“丢弃”和没有足够的元素来填补一个全尺寸的窗口,matlab.tall.movingWindow返回空的输出。空的大小输出是基于输入数组的大小tX,或者提供原型数组的大小“OutputsLike”如果指定。

提示

  • 使用matlab.tall.movingWindow对于简单的滑动窗口的计算。matlab.tall.blockMovingWindow是一种先进的API设计提供更多的灵活性在高大的数组执行滑动窗口的计算。以来,更复杂的使用功能必须精确地处理的数据块包含许多完整的窗口。然而,适当的矢量化计算,可以减少必要的函数调用和提高性能。

版本历史

介绍了R2019a