matlab.tall.blockMovingWindow
应用移动窗口函数和块减少填充块的数据
语法
描述
[
,在那里助教
,结核病
,……] = matlab.tall.blockMovingWindow(windowfcn
,blockfcn
,窗口
,tX
,泰
,……)windowfcn
而且blockfcn
函数句柄返回多个输出,返回数组吗tA, tB,…
的输出参数之一windowfcn
而且blockfcn
.的输入windowfcn
而且blockfcn
是来自参数的数据吗tX, tY,…
.该语法有以下要求:
windowfcn
而且blockfcn
必须返回与所请求的相同数量的输出matlab.tall.blockMovingWindow
.的每个输出
windowfcn
而且blockfcn
必须与第一个数据输入类型相同tX
.所有输出
助教,结核病,…
必须有相同的高度。
例子
用高数组计算移动窗口
使用matlab.tall.blockMovingWindow
计算航班到达和离开延误的移动平均值。
对象的数据存储airlinesmall.csv
数据集,并将其转换为高数组。这些数据包含了美国航班到达和起飞时间的信息。提取ArrDelay
而且DepDelay
变量,它们是航班延误的向量,以创建一个高数组,将延误作为单独的列。
Varnames = {“ArrDelay”,“DepDelay”};ds = tabularTextDatastore(“airlinesmall.csv”,“TreatAsMissing”,“NA”,...“SelectedVariableNames”, varnames);Tt =高(ds);tX = [tt;ArrDelaytt.DepDelay]
tX = Mx2高双矩阵8 12 8 1 21 20 13 12 4 -1 59 63 3 -2 11 -1::::
使用matlab.tall.blockMovingWindow
计算窗口大小为10的第一维数据的移动平均值。自windowfcn
只适用于单个窗口的数据,您可以使用的意思是
函数将数据的窗口缩减为一行的矩阵。的blockfcn
适用于整个数据块,因此使用movmean
函数计算块中每个完整窗口数据的平均值。
Windowfcn = @(info,x) mean(x,1,“omitnan”);Blockfcn = @(info,x) movmean(x,info.)窗口1“omitnan”,“端点”,“丢弃”);A = matlab.tall。blockMovingWindow(windowfcn, blockfcn, 10, tX)
A = MxNx…高双阵???...???...? ? ? ... : : : : : :
将部分结果收集到内存中。
收集((1:10,:))
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在1.2秒内完成-通过2中的第2步:在8.4秒内完成评估,在10秒内完成
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 =高(可读的)“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.1275e+05 2002-03-18 23:23{'严重风暴'}{'西部'}2003-06-18 02:49 00 2003-06-18 10:54{'攻击'}{'西部'}2004-06-20 14:39 231.29 NaN 2004-06-20 19:16{'设备故障'}{'西部'}2002-06-06 19:28 311.86 NaN 2002-06-07 00:51{'设备故障'}::::::::::::
使用matlab.tall.blockMovingWindow
将移动窗口函数应用到高表的块上。指定这些选项:
blkstats
作为块函数,对完整的数据块进行操作(在示例的末尾作为局部函数包含)。窗口大小为50,步幅为5。
端点
作为“丢弃”
忽略数据的不完整窗口。有了这个值,windowfcn
输入可以指定为空[]
因为只有完整的窗口的数据被操作。输入表有六个变量,但两个输出是双精度向量。指定标量加倍作为的值
OutputsLike
函数允许数据类型和大小的改变。
[A, B] = matlab.tall。blockMovingWindow([], @blkstats, 50, T,“步”5,...“端点”,“丢弃”,“OutputsLike”, {1,1});
预览结果中的几行。
[A,B] =收集(头(A),头(B))
使用本地MATLAB会话评估tall表达式:-通过2中的第1步:在0.53秒内完成-通过2中的第2步:在0.7秒内完成评估在1.9秒内完成
一个=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(info, t) a = movmedian([t, t])损失。客户],信息。窗口1“omitnan”,“端点”,“丢弃”);A = A(1:信息。步:结束,:);Out1 = a(:,1);Out2 = a(:,2);结束
输入参数
windowfcn
- - - - - -函数应用于不完整的数据窗口
函数处理|匿名函数|[]
函数应用于数据的不完整窗口,指定为函数句柄、匿名函数或[]
.windowfcn
在计算移动到高维度中的数据时,每个不完整窗口调用一次。matlab.tall.blockMovingWindow
适用于windowfcn
只有当“端点”
默认值为“缩水”
.如果为指定了不同的值“端点”
,然后设置windowfcn
来[]
.
的每个输出windowfcn
必须与第一个数据输入类型相同tX
.您可以使用“OutputsLike”
选项返回不同数据类型的输出。
的一般功能签名windowfcn
是
[a, b, c,…]= windowfcn(info, x, y, ...)
信息
Input是由提供的结构matlab.tall.blockMovingWindow
其中包括以下字段:
步
—指定窗口之间的步长(默认为1)“步”
名称-值对。窗口
—指定窗口大小。属性设置此值窗口
输入参数。
windowfcn
必须满足这些要求:
输入参数-输入
[x, y, z,…]
是适合内存的数据块。这些块是通过从相应的高数组输入中提取数据来生成的[tX, tY, tZ,…]
.输入[x, y, z,…]
满足以下属性:所有的输入
[x, y, z,…]
在第一维中有相同的尺寸。数据块
[x, y, z,…]
来自高维度中的相同索引,假设高数组在高维度中是非单例的。例如,如果tX
而且泰
在高维度是非单块的,那么第一组块可能是x = tX(1:2000,:)
而且y = tY(1:2000,:)
.当任何一个的第一维度
[tX, tY, tZ,…]
大小为1
,对应的块[x, y, z,…]
由高数组中的所有数据组成。应用
windowfcn
必须导致将输入数据缩减为高度为1的标量或数组的切片。当输入是矩阵、N-D数组、表格或时间表时,应用
windowfcn
必须导致在其每个列或变量中减少输入数据。
输出参数-输出
[a, b, c,…]
适合内存的块是否被发送到各自的输出[tA, tB, tC,…]
.输出[a, b, c,…]
满足以下属性:所有的输出
[a, b, c,…]
必须在第一维度中有相同的大小。所有的输出
[a, b, c,…]
是否垂直连接到之前调用的各自结果windowfcn
.所有的输出
[a, b, c,…]
发送到各自目标输出数组中第一个维度中的相同索引。
功能规则- - - - - -
windowfcn
必须满足这个函数规则:F ([inputs1;inputs2) == [F(inputs1);F (inputs2))
:将函数应用于输入的连接应该与将函数分别应用于输入,然后将结果连接相同。
例子:A = matlab.tall。blockMovingWindow(@windowfcn, @blockfcn, 10, tX)
例子:A = matlab.tall。blockMovingWindow([], @blockfcn, 10, tX, 'EndPoints', 'discard')
数据类型:function_handle
blockfcn
- - - - - -函数应用于数据块
函数处理|匿名函数
函数应用于数据块,指定为函数句柄或匿名函数。blockfcn
应用于包含完整数据窗口的数据块。因此,blockfcn
必须以向量化的方式对整个数据块进行操作,并返回与指定的窗口大小和步幅具有适当大小的输出。
的每个输出blockfcn
必须与第一个数据输入类型相同tX
.您可以使用“OutputsLike”
选项返回不同数据类型的输出。
matlab.tall.blockMovingWindow
适用于blockfcn
当数据块只包含完整的窗口时:
对于中间的块
“端点”
设置为“缩水”
(默认行为)。在这种情况下windowfcn
对端数据的不完整窗口进行操作。对于所有块,当
“端点”
设置为“丢弃”
或者填充值。
的一般功能签名blockfcn
是
[a, b, c,…]= blockfcn(info, bX, bY, bZ, ...)
信息
Input是由提供的结构matlab.tall.blockMovingWindow
其中包括以下字段:
步
—指定窗口之间的步长(默认为1)“步”
名称-值对。窗口
—指定窗口大小。属性设置此值窗口
输入参数。
数据块bX, bY, bZ,…
那matlab.tall.blockMovingWindow
提供给blockfcn
具有以下属性:
这些块只包含全尺寸的窗口。
blockfcn
不必为不完整的数据窗口定义行为。第一个数据窗口从块的第一个元素开始。最后一个窗口的最后一个元素是块的最后一个元素。
blockfcn
必须满足这些要求:
输入参数-输入
[bX, bY, bZ,…]
是适合内存的数据块。这些块是通过从相应的高数组输入中提取数据来生成的[tX, tY, tZ,…]
.输入[bX, bY, bZ,…]
满足以下属性:所有的输入
[bX, bY, bZ,…]
在任何允许的扩展后,在第一个维度中具有相同的大小。数据块
[bX, bY, bZ,…]
来自高维度中的相同索引,假设高数组在高维度中是非单例的。例如,如果tX
而且泰
在高维度是非单块的,那么第一组块可能是bX = tX(1:2000,:)
而且bY = tY(1:20000,:)
.如果是任何数据输入的第一个维度
[tX, tY, tZ,…]
大小为1
,则对应的块[bX, bY, bZ,…]
由高数组中的所有数据组成。应用
blockfcn
必须导致输入数据的减少,使结果的高度等于块中的窗口数。你可以使用信息。窗口
而且信息。步
确定块中窗口的数量。如果输入是矩阵、N-D数组、表格或时间表,则应用
blockfcn
必须导致在其每个列或变量中减少输入数据。
输出参数-输出
[a, b, c,…]
是块,适合在内存中,被发送到各自的输出[tA, tB, tC,…]
.输出[a, b, c,…]
满足以下属性:所有的输出
[a, b, c,…]
必须在第一维度中有相同的大小。所有的输出
[a, b, c,…]
是否垂直连接到之前调用的各自结果blockfcn
.所有的输出
[a, b, c,…]
发送到各自目标输出数组中第一个维度中的相同索引。
功能规则- - - - - -
blockfcn
必须满足这个函数规则:F ([inputs1;inputs2) == [F(inputs1);F (inputs2))
:将函数应用于输入的连接应该与将函数分别应用于输入,然后将结果连接相同。
例子:A = matlab.tall。blockMovingWindow(@windowfcn, @blockfcn, 10, tX)
例子:A = matlab.tall。blockMovingWindow([], @blockfcn, 10, tX, 'EndPoints', 'discard')
数据类型:function_handle
窗口
- - - - - -窗口大小
正整数标量|二元行向量
窗口大小,指定为正整数标量或两元素行向量(NB NF)
.
如果
窗口
为标量,则:当窗口大小为时奇怪的,每个窗口都以数据中相应的元素为中心。
当窗口大小为时甚至,每个窗口都以当前和以前的元素为中心。
如果
窗口
是向量(NB NF)
,则该窗口包含前一个注
元素,当前元素和下一个元素NF
输入元素。
默认情况下,当没有足够的元素来填充窗口时,窗口大小在端点处自动截断。当窗口以这种方式被截断时,函数只对填充窗口的元素进行操作。属性可以更改此行为端点
名称-值对。
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
tX
,泰
- - - - - -输入数组(作为单独的参数)
标量|向量|矩阵|多维数组|表|时间表
输入数组,指定为标量、向量、矩阵、多维数组、表或时间表的单独参数。输入数组可以是高数组或内存中的数组。输入数组用作转换函数的输入fcn
.每个输入数组tX,泰,…
必须有相同的高度。
名称-值对参数
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在引号内。您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
tA = matlab.tall。blockMovingWindow(@windowfcn, blockfcn, window, tX, 'Stride', 2)
“步”
- - - - - -窗口之间的步长
1
(默认)|正整数标量
窗口之间的步长,由逗号分隔的对组成“步”
一个正整数标量。后fcn
对一个窗口的数据进行操作,计算向前推进“步”
值,然后再操作下一个窗口。增加价值“步”
从默认值1开始,相当于通过挑出每个其他元素或每第三个元素来减小输出的大小,依此类推。
缺省情况下,“步”
是1
,使每个窗口都以输入中的每个元素为中心。例如,这是一个移动和计算,窗口大小为3,对向量进行操作[1 2 3 4 5 6]'
:
如果的值“步”
是2
,然后计算改变,使每个窗口都以输入(1,3,5)中的每一个第二个元素为中心。移动和现在返回三个部分和,而不是六个:
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
“端点”
- - - - - -处理前窗和后窗的方法
“缩水”
(默认)|“丢弃”
|填充的值
方法处理前窗口和后窗口,指定为逗号分隔的对,由“端点”
和表中的一个值。
在窗口计算的开始和结束时,被操作的元素的窗口是不完整的。的“端点”
选项指定如何处理这些不完整的窗口。
“端点” 价值 |
描述 | 示例:移动和 |
---|---|---|
|
缩小输入端点附近的窗口大小,以只包括现有元素。 |
|
|
当窗口与现有元素不完全重叠时,不要输出任何结果。 |
|
数值或逻辑填充值 |
用指定的数字或逻辑值替换不存在的元素。
|
|
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|逻辑
|字符
|字符串
“OutputsLike”
- - - - - -输出数组原型
单元阵列
输出数组的原型,指定为逗号分隔的对,由“OutputsLike”
以及包含原型数组的单元格数组。当你指定“OutputsLike”
,输出数组助教,结核病,…
返回的matlab.tall.blockMovingWindow
具有与指定的原型数组相同的数据类型和属性{PA、PB,…}
.您必须指定“OutputsLike”
当输出数组的数据类型与输入数组的数据类型不同时。如果你指定“OutputsLike”
,则必须为每个输出指定一个原型数组。
例子:tA = matlab.tall.blockMovingWindow(…, tX, 'OutputsLike', {int8(1)});
,在那里tX
是双精度高数组,返回助教
作为int8
而不是双
.
数据类型:细胞
输出参数
助教
,结核病
-输出数组
标量|向量|矩阵|多维数组
输出数组,以标量、向量、矩阵或多维数组的形式返回。如有任何输入matlab.tall.blockMovingWindow
,那么所有输出参数也都是高的。否则,所有输出参数都是内存中的数组。
输出数组的大小和数据类型取决于指定的窗口函数
windowfcn
而且blockfcn
.输出数组
助教,结核病,…
都有相同的高度,这取决于的值“步”
而且“端点”
.默认情况下,输出数组与输入数组大小相同。一般来说,输出
助教,结核病,…
所有数据类型都必须与第一个数据输入相同吗tX
.但是,您可以指定“OutputsLike”
返回不同的数据类型。对于输入数组的情况tX, tY,…
是空的,还是什么时候“端点”
是“丢弃”
没有足够的元素填满一个全尺寸的窗口,matlab.tall.blockMovingWindow
返回空输出。空输出的大小基于输入数组的大小tX
,或提供给的原型数组的大小“OutputsLike”
,如果指定。
提示
使用
matlab.tall.movingWindow
对于简单的滑动窗口计算。matlab.tall.blockMovingWindow
是一种高级API,旨在为在高数组上执行滑动窗口计算提供更大的灵活性。因此,它的使用更加复杂,因为函数必须准确地处理包含许多完整窗口的数据块。但是,通过适当的向量化计算,可以减少必要的函数调用数量并提高性能。
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。