主要内容

matlab.toll.blockMovingWindow

应用移动窗口函数和块减少到数据的填充块

描述

例子

助教=matlab.toll.blockMovingWindow(窗口FCNblockfcn德克萨斯州适用于blockfcn要完成数据窗口和窗口FCN到边缘附近数据的不完整窗口。指定滑动窗口的大小。结果包含应用的垂直连接blockfcn窗口FCN到这些数据窗口。

例子

助教结核病,…]=matlab.toll.blockMovingWindow(窗口FCNblockfcn德克萨斯州,...)哪里窗口FCNblockfcn返回多个输出的函数句柄是否返回数组tA,tB。。。,每个都对应于的一个输出参数窗口FCNblockfcn.输入到窗口FCNblockfcn数据片段来自于论点吗tX,泰,….该语法有以下要求:

  • 窗口FCNblockfcn必须返回与请求相同数量的输出matlab.toll.blockMovingWindow

  • 的每个输出窗口FCNblockfcn必须与第一个数据输入的类型相同德克萨斯州

  • 所有输出tA,tB,。。。必须有相同的高度。

例子

___]=matlab.toll.blockMovingWindow(___名称,值使用前面的任何语法使用一个或多个名称-值对参数指定附加选项。例如,要调整窗口之间的步长,可以指定“步”和一个标量。如果没有足够的元素来完成窗口,可以指定端点的处理方法“端点”和一个有效的选项('收缩'“丢弃”,或数字填充值)。

例子

全部折叠

使用matlab.toll.blockMovingWindow计算航班到达和起飞延误的移动平均值。

创建用于数据存储airlinesmall.csv数据集并将其转换为一个高数组。该数据包含有关美国航班到达和起飞时间的信息。提取ArrDelayDepDelay变量,这是航班延误的矢量,创建一个包含延误作为独立列的高数组。

varnames = {'ArrDelay'“DepDelay”};ds = tabularTextDatastore (“airlinesmall.csv”“TreatAsMissing”'NA'...“SelectedVariableNames”,varnames);tt=tall(ds);tX=[tt.ArrDelay tt.DepDelay]
tX=Mx2高双矩阵812812102013124-159633-2111-1::

使用matlab.toll.blockMovingWindow计算窗口大小为10的第一维数据的移动平均值。自窗口FCN仅适用于单个窗口的数据,可以使用意思函数将数据窗口缩小为一行矩阵blockfcn应用于整个数据块,因此使用莫维梅恩函数来计算平均值中的块数据的每个完整窗口。

windowfcn = @(信息,x)的平均值(X,1,“奥米南”); blockfcn=@(信息,x)移动平均值(x,信息窗口,1,“奥米南”“端点”“丢弃”);一个= matlab.tall。blockMovingWindow(windowfcn, blockfcn, 10, tX)
一个= MxNx…高双数组???...???...? ? ? ... : : : : : :

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

收集((1:10,:))
使用本地MATLAB会话评估tall表达式:-通过1/2:在1.3秒内完成-通过2/2:在7.1秒内完成评估在9.2秒内完成
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

计算表中变量的移动统计信息。

加载中断.csv数据设定为高表。该数据包含有关停电的信息。

T =高(readtable(“中断.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{'West'} 2004-06-20 14:39 3.4037e+05 2004-04-06 06:10 {'equipment fault'} {'MidWest'} 2002-03-16 06:18 186.44{'设备故障'}::::::::::::

使用matlab.toll.blockMovingWindow将移动窗口函数应用到高桌子的块上。指定这些选项:

  • blkstats作为块的函数,在数据的完整块进行操作(包括在实施例的端部作为本地函数)。

  • 窗宽50,步幅5。

  • 端点作为“丢弃”忽略不完整的数据窗口。使用此值窗口FCN输入可以被指定为空[]因为只操作完整的数据窗口。

  • 输入表有六个变量,但两个输出是双精度向量。请指定标量双精度作为变量的值OutputsLike这样函数就可以改变数据类型和大小。

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

预览结果中的几行。

[A,B] =聚集(头(A),头(B))
using the Local MATLAB Session: - Pass 1 of 2: Completed in 0.41 sec - Pass 2 of 2: Completed in 0.61 sec
一个=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函数用于计算损失顾客使用指定窗口大小在第一维表的变量。功能应用值以减小输出的大小,然后它以两个向量的形式返回结果。

函数[out1,out2]=blkstats(信息,t)a=movmedian([t.Loss t.Customers],信息窗口,1,“奥米南”“端点”“丢弃”);=(1:信息。步:结束,:);着干活= (:1);out2 = (:, 2);结束

输入参数

全部折叠

功能适用于数据的不完整的窗口,指定为功能手柄,匿名函数,或[]窗口FCN在计算移动到高维中的数据时,每个不完整窗口调用一次。matlab.toll.blockMovingWindow适用于窗口FCN只有当“端点”有默认值'收缩'.如果指定一个不同的值“端点”,然后设置窗口FCN[]

的每个输出窗口FCN必须与第一个数据输入的类型相同德克萨斯州.你可以使用“OutputsLike”选项返回不同数据类型的输出。

广义函数签名窗口FCN

[a,b,c,…]=windowfcn(信息,x,y,…)
信息Input是由matlab.toll.blockMovingWindow它包括以下字段:

  • - 窗口之间指定步长大小(默认值:1)。属性设置此值“步”名称-值对。

  • —指定窗口大小。属性设置此值输入参数。

窗口FCN必须满足以下要求:

  1. 输入参数——输入[X,Y,Z,...]是,适合在存储器中的数据的块。该块由从相应的高大阵列的输入中提取数据产生[tX,tY,tZ,…].该输入[X,Y,Z,...]满足以下特性:

    • 所有的输入[X,Y,Z,...]在第一个维度中有相同的大小。

    • 数据中的块[X,Y,Z,...]来自高维中的同一索引,假设高维中的高数组是非Singleton。例如,如果德克萨斯州是nonsingleton在高大的尺寸,然后第一组块的可能x=tX(1:20000,:)y =泰(1:20000:)

    • 当任何一个的第一维度[tX,tY,tZ,…]的大小1,对应的块[X,Y,Z,...]包含了那个大数组中的所有数据。

    • 申请窗口FCN必须导致将输入数据缩减为高度为1的数组的标量或切片。

      当输入是一个矩阵、N-D数组、表或时间表时,应用窗口FCN必须减少其每一列或变量中的输入数据。

  2. 输出参数- 输出[a, b, c,…]适合内存的块是否发送到相应的输出[tA, tB, tC,…].输出[a, b, c,…]满足以下特性:

    • 所有输出的[a, b, c,…]在第一个维度中必须有相同的大小。

    • 所有输出的[a, b, c,…]是否与之前调用的结果垂直连接窗口FCN

    • 所有输出的[a, b, c,…]发送到各自目标输出数组的第一个维度中的相同索引。

  3. 功能规则- - - - - -窗口FCN必须满足此功能的规则:

    • F ([inputs1;inputs2]) = = (F (inputs1);F (inputs2)):将函数应用于连接输入,应该与将函数分别应用于输入,然后连接结果相同。

例子:A=matlab.toll.blockMovingWindow(@windowfcn,@blockfcn,10,tX)

例子:一个= matlab.tall。blockMovingWindow([], @blockfcn, 10, tX, 'EndPoints', 'discard')

数据类型:function_handle

用于数据块的函数,指定为函数句柄或匿名函数。blockfcn应用于包含完整数据窗口的数据块。因此,blockfcn必须以向量化的方式对整个数据块进行操作,并返回与指定窗口大小和步幅匹配的输出。

的每个输出blockfcn必须与第一个数据输入的类型相同德克萨斯州.你可以使用“OutputsLike”选项返回不同数据类型的输出。

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

  • 对于中间块“端点”被设定为'收缩'(默认行为)。在这种情况下窗口FCN对两端数据的不完整窗口进行操作。

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

广义函数签名blockfcn

[a,b,c,…]=块FCN(信息,bX,bZ,…)
信息Input是由matlab.toll.blockMovingWindow它包括以下字段:

  • - 窗口之间指定步长大小(默认值:1)。属性设置此值“步”名称-值对。

  • —指定窗口大小。属性设置此值输入参数。

数据块bX,bY,bZ。。。matlab.toll.blockMovingWindow提供给blockfcn这些属性:

  • 这些街区只有全尺寸的窗户。blockfcn不需要为不完整的数据窗口定义行为。

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

blockfcn必须满足以下要求:

  1. 输入参数——输入[bX, bY, bZ,…]是,适合在存储器中的数据的块。该块由从相应的高大阵列的输入中提取数据产生[tX,tY,tZ,…].该输入[bX, bY, bZ,…]满足以下特性:

    • 所有的输入[bX, bY, bZ,…]在任何允许的扩展后,在第一个维度中具有相同的大小。

    • 数据中的块[bX, bY, bZ,…]来自高维中的同一索引,假设高维中的高数组是非Singleton。例如,如果德克萨斯州是nonsingleton在高大的尺寸,然后第一组块的可能bX=tX(1:20000,:)bY=tY(1:20000,:)

    • 任何数据输入的第一个维度[tX,tY,tZ,…]的大小1,然后是相应的块[bX, bY, bZ,…]包含了那个大数组中的所有数据。

    • 申请blockfcn必须导致减少所述输入数据,使得结果具有高度的等于块的窗口的数量。您可以使用信息窗口信息。步来确定在块的窗口的数量。

      如果输入是一个矩阵,N-d阵列,表或时间表,然后施加blockfcn必须减少其每一列或变量中的输入数据。

  2. 输出参数- 输出[a, b, c,…]块是否适合内存,要发送到各自的输出[tA, tB, tC,…].输出[a, b, c,…]满足以下特性:

    • 所有输出的[a, b, c,…]在第一个维度中必须有相同的大小。

    • 所有输出的[a, b, c,…]是否与之前调用的结果垂直连接blockfcn

    • 所有输出的[a, b, c,…]发送到各自目标输出数组的第一个维度中的相同索引。

  3. 功能规则- - - - - -blockfcn必须满足此功能的规则:

    • F ([inputs1;inputs2]) = = (F (inputs1);F (inputs2)):将函数应用于连接输入,应该与将函数分别应用于输入,然后连接结果相同。

例子:A=matlab.toll.blockMovingWindow(@windowfcn,@blockfcn,10,tX)

例子:一个= matlab.tall。blockMovingWindow([], @blockfcn, 10, tX, 'EndPoints', 'discard')

数据类型:function_handle

窗口大小,指定为正整数标量或双元素行向量[NB NF]

  • 如果为标量,则:

    • 当窗口大小为奇怪的,每个窗口都以数据中相应的元素为中心。

    • 当窗口大小为甚至,每个窗口围绕当前和以前的元素居中。

  • 如果是矢量[NB NF],则窗口包含前面的元素、当前元素和下一个元素NF输入元素。

默认情况下,当没有足够的元素填充窗口时,窗口大小将在端点处自动截断。以这种方式截断窗口时,函数仅对填充窗口的元素进行操作。您可以使用端点名称-值对。

数据类型:仅有一个的|双重的|int8|int16|INT32|int64|uint8|uint16|uint32|uint64

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

名称-值对的观点

指定可选的逗号分隔的对名称,值论点。名称参数名和价值为对应值。名称必须出现在引号内。可以以任意顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:tA = matlab.tall。blockMovingWindow(@windowfcn, blockfcn, window, tX, 'Stride', 2)

窗口之间的步长,指定为逗号分隔的对,由“步”一个正整数标量。后fcn操作一个窗口的数据,计算向前推进“步”值,然后在下一个窗口上操作。增加…的价值“步”从1的默认值是与由挑选出所有其他元素,或每第三元件减少输出的大小,等等。

缺省值为“步”1,使得每个窗口在输入每个元素为中心。例如,这里是一个移动的和计算与3操作对矢量的窗口大小[1 2 3 4 5 6]'

如果“步”2,然后计算更改,使每个窗口以输入(1、3、5)中的第二个元素为中心。移动和现在返回三个部分和,而不是六个部分和:

数据类型:仅有一个的|双重的|int8|int16|INT32|int64|uint8|uint16|uint32|uint64

方法处理前导窗口和后导窗口,指定为逗号分隔对,由“端点”和表中的一个值。

在开始和一个窗口的计算结束时,在其上操作元件的窗口是不完整的。的“端点”选项指定如何处理这些不完整的窗口。

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

'收缩'

缩小靠近输入端点的窗口大小以只包含现有元素。

“丢弃”

如果窗口未与现有图元完全重叠,则不要输出任何结果。

数字或逻辑填充值

替换不存在的与指定的数字或逻辑值的元素。

  • 填充值的类型必须与德克萨斯州

  • 第一个维度中填充值的大小必须等于1,其他维度中的大小必须匹配德克萨斯州

数据类型:仅有一个的|双重的|int8|int16|INT32|int64|uint8|uint16|uint32|uint64|逻辑|char|一串

输出数组的原型,指定为逗号分隔对,由“OutputsLike”以及包含原型数组的单元格数组。当你指定“OutputsLike”,输出数组tA,tB,。。。通过返回matlab.toll.blockMovingWindow具有与指定的原型数组相同的数据类型和属性{PA,PB,…}.您必须指定“OutputsLike”当输出数组的数据类型与输入数组的数据类型不同时。如果您指定“OutputsLike”,则必须为每个输出指定一个原型数组。

例子:tA=matlab.toll.blockMovingWindow(…,tX,'OutputsLike',{int8(1)});哪里德克萨斯州是双精度高数组,返回助教作为int8而不是双重的

数据类型:细胞

输出参数

全部折叠

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

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

  • 输出数组tA,tB,。。。都有相同的高度,这取决于值“步”“端点”.默认情况下,输出数组与输入数组的大小相同。

  • 一般来说,输出tA,tB,。。。必须与第一个数据输入具有相同的数据类型德克萨斯州.但是,您可以指定“OutputsLike”返回不同的数据类型。在输入数组中tX,泰,…是空的,或当“端点”“丢弃”而且没有足够的元素来填充一个全尺寸的窗口,matlab.toll.blockMovingWindow返回空输出。空输出的大小基于输入数组的大小德克萨斯州,或根据提供的原型阵列的大小“OutputsLike”如果指定。

提示

  • 使用matlab.tall.movingWindow用于简单的滑动窗口计算。matlab.toll.blockMovingWindow是一种高级API,旨在为在高数组上执行滑动窗口计算提供更大的灵活性。因此,它的使用更加复杂,因为函数必须准确地处理包含许多完整窗口的数据块。但是,通过适当的向量化计算,可以减少必要的函数调用次数并提高性能。

介绍了R2019a