主要内容

matlab.tall.blockMovingWindow

运用移动窗口功能和减少块垫块的数据

自从R2019a

描述

例子

助教= matlab.tall.blockMovingWindow (windowfcn,blockfcn,窗口,tX)适用于blockfcn完成数据和窗户windowfcn数据不完整的windows在边缘附近。窗口指定滑动窗口的大小。结果包含应用的垂直连接blockfcnwindowfcn这些窗口的数据。

例子

(助教,结核病,……)= matlab.tall.blockMovingWindow (windowfcn,blockfcn,窗口,tX,,……),在那里windowfcnblockfcn函数句柄返回多个输出,返回数组助教,结核病,…,每一个对应的一个输出参数windowfcnblockfcn。的输入windowfcnblockfcn件的数据参数吗tX,泰,…。这个语法有这些要求:

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

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

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

例子

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

例子

全部折叠

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

创建一个数据存储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.blockMovingWindow计算数据的移动意味着在第一维度与窗口大小为10。自windowfcn只适用于单一窗口的数据,您可以使用的意思是函数来降低数据到一个矩阵的窗户一行。的blockfcn适用于整个的数据块,所以使用movmean函数计算均值的每个窗口的数据块。

windowfcn = @(信息,x)意味着(x, 1,“omitnan”);blockfcn = @(信息,x) movmean (x, info.Window 1“omitnan”,“端点”,“丢弃”);一个= matlab.tall。blockMovingWindow (windowfcn blockfcn 10, tX)
一个= MxNx…高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :

收集的一部分结果到内存中。

收集((1:10,:))
评估高表达式使用当地的MATLAB会话:通过1 2:在1.1秒完成,通过2 2:在4.7秒完成评估在6.5秒完成
ans =10×210.8000 8.8000 18.8333 17.8333 16.5714 15.0000 15.8750 13.0000 14.4444 11.8889 13.2000 10.8000 14.0000 11.1000 13.5000 11.9000 15.3000 11.4000 19.7000 13.4000

计算移动数据表的变量。

加载outages.csv数据集作为高表。数据包含关于停电的信息。

T =高(readtable (“outages.csv”))
T = 1468 x6高表地区OutageTime损失客户RestorationTime引起_________________ ___________ ______ __________ ___________ ___________________{“西南”}2002-02-01 12:18 458.98 - 1.8202 e + 06 2002-02-01 16:50{“暴风雪”}{“东南”}2003-01-23 00:49 530.14 - 2.1204 e + 05 NaT{“暴风雪”}{“东南”}2003-02-07)21:15 289.4 - 1.4294 e + 05 2003-02-07 08:14{“暴风雪”}{‘西方’}2004-04-06 05:44 434.81 - 3.4037 e + 05 2004-04-06 06:10{“设备故障”}{“中西部”}2002-03-16 06:18 186.44 - 2.1275 e + 05 2002-03-16 23:23{“暴风”}{‘西方’}2003-06-18 02:49 0 0 2003-06-18 10:54{‘攻击’}{‘西方’}2004-06-20 39 231.29南2004-06-20 19:16{“设备故障”}{‘西方’}2002-06-06 19:28 311.86南2002-06-06 00:51{“设备故障”}::::::::::::

使用matlab.tall.blockMovingWindow应用移动窗函数高表的块。指定这些选项:

  • blkstats作为块函数来操作完成的数据块(包括最后的例子作为本地函数)。

  • 窗口大小50和5的步伐。

  • 端点作为“丢弃”忽略不完整的窗口的数据。这个值,windowfcn可以指定输入为空[]因为只有完整的数据操作窗口。

  • 输入表有六个变量,但双精度两个输出向量。指定标量双打作为值OutputsLike这函数允许改变数据类型和大小。

[A, B] = matlab.tall。blockMovingWindow ([] @blkstats 50 T“步”5,“端点”,“丢弃”,“OutputsLike”,{1});

预览结果中的几行。

[A, B] =收集(头(A)、(B))
评估高表达式使用当地的MATLAB会话:通过1 2:在0.4秒完成,通过2 2:在0.61秒完成评估在1.5秒完成
一个=8×1254.0861 254.0861 340.3499 452.0191 464.8524 471.9737 464.8524 464.8524
B =8×1105×1.3447 1.0779 1.4227 1.4509 1.2888 1.2888 1.2308 1.3722

blkstats函数计算的移动平均价值损失客户表变量在第一维度使用指定的窗口大小。函数的应用价值减少输出的大小,然后返回结果的两个向量。

函数[着干活,out2] = blkstats(信息,t) = movmedian ([t。损失t。客户)信息。窗口1“omitnan”,“端点”,“丢弃”);=(1:信息。步:结束,:);着干活= (:1);out2 = (:, 2);结束

输入参数

全部折叠

函数适用于不完整的窗口的数据,指定为一个函数处理,匿名函数,或者[]windowfcn每调用一次完整窗口随着计算在高维度数据。matlab.tall.blockMovingWindow适用于windowfcn只有当“端点”的默认值吗“缩水”。如果你指定一个不同的值“端点”,然后设置windowfcn[]

每个输出的windowfcn必须是相同的类型作为第一个数据输入tX。您可以使用“OutputsLike”选择返回输出不同的数据类型。

一般功能的签名windowfcn

(a, b, c,……)= windowfcn(info, x, y, ...)
信息提供的输入是一个结构matlab.tall.blockMovingWindow这些领域包括:

  • 窗口之间——指定步长(默认值:1),设置这个值“步”名称-值对。

  • 窗口——指定的窗口大小。设置这个值窗口输入参数。

windowfcn必须满足这些要求:

  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,……)包括高数组中的所有数据。

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

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

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

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

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

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

  3. 功能规则- - - - - -windowfcn必须满足这个功能规则:

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

例子:一个= matlab.tall。blockMovingWindow (@windowfcn @blockfcn 10, tX)

例子:一个= matlab.tall。blockMovingWindow (tX @blockfcn[], 10日,“端点”、“丢弃”)

数据类型:function_handle

功能应用的数据块,指定为一个函数处理或匿名函数。blockfcn应用于包含完整的数据的数据块。因此,blockfcn必须在整个矢量化的方式操作的数据块并返回输出的适当的大小指定窗口大小和步伐。

每个输出的blockfcn必须是相同的类型作为第一个数据输入tX。您可以使用“OutputsLike”选择返回输出不同的数据类型。

matlab.tall.blockMovingWindow适用于blockfcn的数据块当块只包含完整的窗口:

  • 中间块时“端点”被设置为“缩水”(默认行为)。在这种情况下windowfcn运行在windows上的数据不完整。

  • 对所有块时“端点”被设置为“丢弃”或一个填充的值。

一般功能的签名blockfcn

(a, b, c,……)= blockfcn(info, bX, bY, bZ, ...)
信息提供的输入是一个结构matlab.tall.blockMovingWindow这些领域包括:

  • 窗口之间——指定步长(默认值:1),设置这个值“步”名称-值对。

  • 窗口——指定的窗口大小。设置这个值窗口输入参数。

的数据块bX,,,…matlab.tall.blockMovingWindow提供给blockfcn这些属性:

  • 模块只包含全尺寸的窗口。blockfcn没有定义一个行为数据的不完整的windows。

  • 第一个窗口的数据从第一个元素开始的块。最后一个窗口的最后一个元素的最后一个元素是块。

blockfcn必须满足这些要求:

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

    • 所有的输入(bX,,,……)有相同的大小在任何允许扩张后的第一个维度。

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

    • 如果第一个维度的数据输入(tX,泰,tZ,…)有一个大小1,那么相应的块(bX,,,……)包括高数组中的所有数据。

    • 应用blockfcn必须导致减少输入数据,这样结果高度等于窗户的数量。您可以使用info.Windowinfo.Stride确定数量的窗户在一块。

      如果输入是一个矩阵,一天数组,表,或时间表,然后应用blockfcn必须减少导致的输入数据在每一个列或变量。

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

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

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

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

  3. 功能规则- - - - - -blockfcn必须满足这个功能规则:

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

例子:一个= matlab.tall。blockMovingWindow (@windowfcn @blockfcn 10, tX)

例子:一个= matlab.tall。blockMovingWindow (tX @blockfcn[], 10日,“端点”、“丢弃”)

数据类型: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。blockMovingWindow (@windowfcn blockfcn、窗、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.blockMovingWindow有相同的数据类型和属性指定的原型数组{PA、PB,…}。您必须指定“OutputsLike”每当一个输出数组的数据类型不同的输入数组。如果您指定“OutputsLike”,那么你必须指定一个原型为每个输出数组。

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

数据类型:细胞

输出参数

全部折叠

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

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

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

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

提示

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

版本历史

介绍了R2019a