matlab.tall.reduce
减少减少算法应用到数组的数据块
语法
描述
例子
减少功能适用于高大的向量
创建一个高表,从表中提取一个高大的向量,然后找到向量中的元素的总数。
创建一个高表airlinesmall.csv
数据集,数据包含的信息到达和离开的时间我们的航班。提取ArrDelay
变量,这是一个向量的延迟到来。
ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tX = tt.ArrDelay;
使用matlab.tall.reduce
数非的总数南
元素高的向量。第一个函数元素个数
计算每个数据块元素的数量,和第二个函数总和
加在一起所有的计数为每个块产生一个标量结果。
s = matlab.tall.reduce (@numel @sum tX)
s = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :
收集结果到内存中。
s =收集(s)
评估高表达式使用当地的MATLAB会话:通过1 1:在1.3秒完成评估在1.4秒完成
s = 123523
计算高向量的平均值
创建一个高表,提取两个高大的向量形式,然后计算每个向量的平均值。
创建一个高表airlinesmall.csv
数据集,数据包含的信息到达和离开的时间我们的航班。提取ArrDelay
和DepDelay
变量向量的抵达和起飞延误。
ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tt = rmmissing (tt);tX = tt.ArrDelay;泰= tt.DepDelay;
在第一阶段的算法,计算出总和和元素计数为每个数据块的向量。要做到这一点,你可以编写一个函数,它接受两个输入和返回一个输出之和与计数为每个输入。这个函数是列为本地函数的例子。
函数泰bx = sumcount (tx) bx = [(tx)和元素个数(tx)和(ty)元素个数(ty)];结束
在减速阶段的算法,需要添加所有的中间金额和数量。因此,matlab.tall.reduce
返回元素的总金额和数量的元素为每个输入向量,然后计算的意思是一个简单的部门。这一步可以应用总和
函数的第一个维度1-by-4向量从第一阶段的输出。
reducefcn = @ (x)和(x, 1);s = matlab.tall.reduce (@sumcount reducefcn tX,泰)
s = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : :
s =收集(s)
评估高表达式使用当地的MATLAB会话:通过1 1:在1.4秒完成评估在1.6秒完成
s =1×4860584 120866 982764 120866
前两个元素年代
和计数之和吗tX
,第二个两个元素之和与计数泰
。把金额和计算收益率的平均值,可以返回的答案进行比较的意思是
函数。
my_mean = [s(1) /秒(2)(3)/ s (4))
my_mean =1×27.1201 - 8.1310
m =收集(平均((tX泰)))
评估高表达式使用当地的MATLAB会话:通过1 1:在0.43秒完成评估在0.52秒完成
m =1×27.1201 - 8.1310
本地函数
这里列出的是sumcount
函数,matlab.tall.reduce
调用计算中间金额和元素数量。
函数泰bx = sumcount (tx) bx = [(tx)和元素个数(tx)和(ty)元素个数(ty)];结束
计算统计的组
创建一个高的表,然后计算平均每年航班延误的数据。
创建一个高表airlinesmall.csv
数据集,数据包含的信息到达和离开的时间我们的航班。从表中删除的行缺失数据和提取ArrDelay
,DepDelay
,一年
变量。这些变量向量的抵达和起飞延误和年每个飞行相关的数据集。
ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”“年”};tt =高(ds);tt = rmmissing (tt);
使用matlab.tall.reduce
两个函数应用于高表。第一个函数结合了ArrDelay
和DepDelay
变量找到总意味着每个航班的延误。功能决定了有多少独特的年每个块的数据,然后通过每年周期计算的平均总延误航班。结果是一个包含今年两变量表和平均总延迟。这个中间数据需要进一步减少到达每年平均延迟。保存这个函数在当前文件夹transform_fcn.m
。
类型transform_fcn
函数t = transform_fcn (a, b, c) 2 =收集(独特的(c));k = 1:长度(ii) jj = (c = = ii (k));d =意味着(((jj) b (jj)), 2);如果k = = 1 t =表(c (jj), d, VariableNames,{‘年’‘MeanDelay});其他t = [t;表(c (jj), d, VariableNames,{‘年’‘MeanDelay})];结束结束结束
第二个函数使用第一个函数的结果来计算平均每年总延迟。的输出reduce_fcn
兼容的输出transform_fcn
,这样的数据块可以以任意顺序连接不断地降低,直到只剩下一行每一年。
类型reduce_fcn
函数TT = reduce_fcn (t)[组Y] = findgroups (t.Year);D = splitapply (@mean, t。MeanDelay、组);TT =表(Y, D, VariableNames,{‘年’‘MeanDelay});结束
变换和减少函数应用于高大的向量。由于输入(类型双
)和输出(类型表
)有不同的数据类型,使用“OutputsLike”
名称-值对将指定输出是一个表。一个简单的方法来指定输出的类型与虚拟输入调用转换函数。
一个= tt.ArrDelay;b = tt.DepDelay;c = tt.Year;d1 = matlab.tall。减少(@transform_fcn @reduce_fcn, a, b, c,“OutputsLike”{transform_fcn (0, 0, 0)})
d1) =(高表年MeanDelay ___ _____ ?吗?吗?吗?吗?吗?::::
收集到内存中看到结果平均每年总航班延误。
d1 =收集(d1)
评估高表达式使用当地的MATLAB会话:通过1 1:在2.6秒完成评估在3秒完成
d1 =22×2表年MeanDelay ___ _____ 1987 7.6889 1988 6.7918 1989 8.0757 1990 7.1548 1991 4.0134 1992 5.1767 1993 5.4941 1994 6.0303 1995 8.4284 1996 9.6981 1997 8.4346 1998 8.3789 1999 8.9121 2000 10.595 2001 6.8975 2002 3.4325⋮
替代方法
计算同一统计组的另一种方法是使用splitapply
打电话给matlab.tall.reduce
(而不是使用matlab.tall.reduce
打电话给splitapply
)。
使用这种方法,您的电话findgroups
和splitapply
直接在数据。这个函数mySplitFcn
运行在每组数据包括调用matlab.tall.reduce
。采用变换,减少功能matlab.tall.reduce
不需要组织数据,所以这些功能只是在pregrouped数据执行计算吗splitapply
传递给他们。
类型mySplitFcn
函数T = mySplitFcn (a, b, c) T = matlab.tall。减少(@non_group_transform_fcn @non_group_reduce_fcn,……“OutputsLike”, a, b, c {non_group_transform_fcn (0, 0, 0)});函数t = non_group_transform_fcn (a, b, c) d =意味着([b], 2);t =表(c, d, VariableNames,{‘年’‘MeanDelay});结束函数TT = non_group_reduce_fcn (t) D =意味着(t.MeanDelay);TT =表(t.Year (1), D, VariableNames,{‘年’‘MeanDelay});结束结束
调用findgroups
和splitapply
操作数据和应用mySplitFcn
每组数据。
组= findgroups (c);d2 = splitapply (@mySplitFcn, a, b, c组);d2 =收集(d2)
评估高表达式使用当地的MATLAB会话:通过1 2:在0.68秒完成,通过2 2:在1.8秒完成评估在3.1秒完成
d2 =22×2表年MeanDelay ___ _____ 1987 7.6889 1988 6.7918 1989 8.0757 1990 7.1548 1991 4.0134 1992 5.1767 1993 5.4941 1994 6.0303 1995 8.4284 1996 9.6981 1997 8.4346 1998 8.3789 1999 8.9121 2000 10.595 2001 6.8975 2002 3.4325⋮
高向量的加权标准差和方差
计算加权标准差和方差的一个高大数组使用向量的权重。这是一个如何使用的例子matlab.tall.reduce
解决功能高数组不支持。金宝app
创建两个高大的随机数据的向量。tX
包含随机数据,tP
包含相应的概率,这样总和(tP)
是1
。这些概率是合适的重量数据。
rng默认的tX =高(兰德(1 e4, 1));p =兰德(1 e4, 1);tP =高(正常化(p,“规模”、sum (p)));
编写一个恒等函数,返回输出等于输入。这种方法的转换步骤跳过matlab.tall.reduce
并将数据直接传递到减少步骤,减少功能的反复应用,以减少数据的大小。
类型identityTransform.m
函数[A, B] = identityTransform = X (X, Y);B = Y;结束
接下来,编写一个函数来操作减少块高大的向量来计算加权方差和标准偏差。
类型weightedStats.m
函数[wvar wstd] = weightedStats (X, P) wvar = var (X, P);wstd =性病(X, P);结束
使用matlab.tall.reduce
这些函数应用于高的数据块的向量。
[tX_var_weighted, tX_std_weighted] = matlab.tall。减少(@identityTransform @weightedStats tX, tP)
tX_var_weighted = MxNx……高的双重数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : : tX_std_weighted = MxNx... tall double array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :
输入参数
fcn
- - - - - -变换函数应用
函数处理|匿名函数
应用变换函数,指定为一个函数处理或匿名函数。每个输出的fcn
必须是相同的类型作为第一个输入tX
。您可以使用“OutputsLike”
选择返回输出不同的数据类型。如果fcn
返回一个以上的输出,那么输出必须都有相同的高度。
一般功能的签名fcn
是
(a, b, c,……)= fcn(x, y, z, ...)
fcn
必须满足这些要求:
输入参数——输入
(x, y, z,……)
是装入内存的数据块。从各自的提取数据产生的块高输入数组(tX,泰,tZ,…)
。输入(x, y, z,……)
满足这些属性:所有的
(x, y, z,……)
有相同的大小在任何允许扩张后的第一个维度。的数据块
(x, y, z,……)
来自同一指数在高维度,假设高数组nonsingleton在高维度。例如,如果tX
和泰
nonsingleton在高维度,那么第一组块可以吗x = tX (1:20000:)
和y =泰(1:20000:)
。如果第一个维度的
(tX,泰,tZ,…)
有一个大小1
,那么相应的块(x, y, z,……)
包括高数组中的所有数据。
输出参数——输出
(a, b, c,……)
是装入内存块,发送给相应的输出(助教、结核,tC,…)
。输出(a, b, c,……)
满足这些属性:所有的
(a, b, c,……)
必须具有相同的大小在第一维度。所有的
(a, b, c,……)
垂直连接有各自的结果之前的电话fcn
。所有的
(a, b, c,……)
被发送到相同的索引在第一维度在各自目的地输出数组。
功能规则- - - - - -
fcn
必须满足功能规则:F ([inputs1;inputs2]) = = (F (inputs1);F (inputs2))
:应用功能连接的输入应该是一样的应用函数分别输入然后连接结果。
空输入——确保
fcn
可以处理的输入0的高度。空输入可能发生当一个文件是空的或如果你已经做了很多过滤数据。
例如,该函数接受两个输入数组,广场,并返回两个数组输出:
函数[xx, yy] = sqInputs (x, y) xx = x ^ 2;yy = y ^ 2;结束
tX
和泰
用这个命令,找到最大值:tA = matlab.tall。减少(@sqInputs @max tX,泰)
例子:tC = matlab.tall.reduce (@numel @sum, tX,泰)
发现元素的数量在每一个街区,然后总结结果计算元素的总数。
数据类型:function_handle
reducefcn
- - - - - -减少函数应用
函数处理|匿名函数
减少功能应用,指定为一个函数处理或匿名函数。每个输出的reducefcn
必须是相同的类型作为第一个输入tX
。您可以使用“OutputsLike”
选择返回输出不同的数据类型。如果reducefcn
返回一个以上的输出,那么输出必须都有相同的高度。
一般功能的签名reducefcn
是
(rA, rB, rC,…)= reducefcn(a, b, c, ...)
reducefcn
必须满足这些要求:
输入参数——输入
(a, b, c,……)
是装入内存块。返回的数据要么是输出块fcn
或部分减少输出reducefcn
为进一步减少再次手术。输入(a, b, c,……)
满足这些属性:输入
(a, b, c,……)
有相同的尺寸在第一维度。对于一个给定的索引在第一维度,每一行的数据块
(a, b, c,……)
源于输入,或源于同一之前调用reducefcn
。对于一个给定的索引在第一维度,每一行的输入
(a, b, c,……)
为该指数源于相同的索引在第一维度。
输出参数——所有输出
(rA, rB, rC,…)
必须具有相同的大小在第一维度。此外,他们必须垂直concatenable与各自的输入(a, b, c,……)
必要时,以便减少重复。功能规则- - - - - -
reducefcn
必须满足这些功能规则(舍入误差):(输入)= = F (F(输入))
:应用函数重复相同的输入不会改变结果。F ([input1;input2]) = = F ([input2;input1])
:结果不应依赖于连接的顺序。F ([input1;input2]) = = F ([F (input1);F (input2)])
:应用功能连接的一些中间结果应该一样单独应用它,再次连接,并应用它。
空输入——确保
reducefcn
可以处理的输入0的高度。空输入可能发生当一个文件是空的或如果你已经做了很多过滤数据。这个调用,所有输入正确的类型和大小的块空数组维度第一。
减少一些合适的功能是内置的降维等功能总和
,刺激
,马克斯
,等等。这些函数可以处理产生的中间结果fcn
并返回一个单一的标量。这些函数的属性的顺序串连发生和减少操作应用的次数不改变最终的答案。等一些功能的意思是
和var
通常,应避免减少功能,因为减少的次数操作应用可以改变最后的答案。
例子:tC = matlab.tall.reduce (@numel @sum tX)
发现元素的数量在每一个街区,然后总结结果计算元素的总数。
数据类型:function_handle
tX
,泰
- - - - - -输入数组
标量|向量|矩阵|多维数组
输入数组,指定为标量、向量,矩阵或多维数组。输入数组作为输入变换函数fcn
。每个输入数组tX,泰,…
必须有高度兼容。两个输入兼容的高度时,他们有相同的高度,或者当一个输入的高度。
巴勒斯坦权力机构
,PB
- - - - - -输出数组的原型
数组
样机的输出数组,指定为数组。当你指定“OutputsLike”
,输出数组助教,结核病,…
返回的matlab.tall.reduce
有相同的数据类型和属性指定的数组{PA、PB,…}
。
例子:tX, tA = matlab.tall.reduce (fcn reducefcn OutputsLike, {int8 (1)});
,在那里tX
是一个双精度高的数组,返回助教
作为int8
而不是双
。
输出参数
助教
,结核病
——输出数组
矩阵向量标量| | |多维数组
输出数组,返回标量、向量,矩阵或多维数组。如果任何输入matlab.tall.reduce
高,那么所有输出参数也高。否则,输出参数都是内存中的数组。
大小和输出数组的数据类型取决于指定的函数fcn
和reducefcn
。一般来说,输出助教,结核病,…
都必须具有相同的数据类型作为第一个输入tX
。然而,您可以指定“OutputsLike”
返回不同的数据类型。输出数组助教,结核病,…
都有相同的高度。
更多关于
高的组块
当您创建一个高大从数据存储阵列,底层数据存储便于计算期间的运动数据。离散的数据移动棋子块或块,每个块是一组连续的行可以装入内存。例如,一个块的一个二维数组(如表)X (n: m:)
,对于一些下标n
和米
。每个块的大小是基于价值的ReadSize
房地产的数据存储,但大小的块可能并不完全。的目的matlab.tall.reduce
,一个高大的数组被认为是许多这样的块的垂直连接:
例如,如果您使用总和
函数的变换函数,和中间结果每一块。因此,而不是返回一个标量值的和元素,结果是一个向量长度等于块的数量。
ds = tabularTextDatastore (“airlinesmall.csv”,“TreatAsMissing”,“NA”);ds。SelectedVariableNames = {“ArrDelay”“DepDelay”};tt =高(ds);tX = tt.ArrDelay;f = @ (x)和(x,“omitnan”);s = matlab.tall。减少(f, @ x (x), tX);s =收集(s)
s = 140467 101065 164355 135920 111182 186274 21321
介绍了R2018b
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。