收集

收集高大阵列到存储器执行排队的操作之后

描述

ÿ=聚集(X执行所需的所有排队的操作,以计算未计算的高阵列X并收集结果到内存中ÿ

MATLAB®如果的结果可能内存用完收集计算过大。如果您不确定的结果是否能适合在内存中,使用聚(头(X))要么聚集(尾(X))进行充分的计算,但仅使结果的一小部分到内存中。

收集微确保额外穿过数据期间的计算尽可能进行组合。欲了解更多信息,请参阅高大阵列的递延评价

[ÿ1,ÿ2,ÿ3,...] =聚集(X1,X2,X3,...)集多个未计算的高大阵列X1,X2,X3,...成相应的输出Y1,Y2,Y3,...

例子

全部收缩

创建用于数据存储airlinesmall.csv数据集。选择的变量的一个子集一起工作,和治疗'NA'值丢失的数据,以便tabularTextDatastore它们替换为NaN值。转换数据存储到一个高台。

varnames = {'年''ArrDelay''UniqueCarrier'};DS = tabularTextDatastore('airlinesmall.csv''TreatAsMissing''NA'...'SelectedVariableNames',varnames);T =高(DS)
T = MX3高大表年份ArrDelay UniqueCarrier ____ ________ _____________ 1987 8 { 'PS'} 1987年8 { 'PS'} 1987年21 { 'PS'} 1987年13 { 'PS'} 1987年4 { 'PS'} 1987年59 {”PS '} 1987年3 {' PS '} 1987年11 {' PS'}::::::

计算高大表的大小。

SZ =尺寸(T)
SZ = 1×2高大双列矢量??

MATLAB®不会立即评估高大阵列的大部分操作。相反,MATLAB记得你执行,当你进入他们的操作和在后台优化的计算。

当您使用收集一个未计算的高大阵列上,MATLAB执行所有使用通过数据传递的最小数目的排队操作。这种优化大大降低了大型计算的执行时间。出于这个原因,你应该使用收集只有当你需要看到的结果。

收集以执行计算和收集的结果到存储器中。

S =聚集(SZ)
评估使用本地MATLAB会话高表达: - 通的1 1:在0.59秒评价完成在0.75秒完成
S =1×2123523 3

收集与几个输入同时评估数个高阵列。

创建从1到1000计算每一列中的最大和最小值之间的内存数组中随机整数的一个高大的阵列。

中A =高(兰迪(1000,100,7))
A = 100x7高大双矩阵815 163 645 60 423 583 851 906 795 379 682 95 541 561 127 312 812 43 599 870 930 914 529 533 72 471 265 697 633 166 351 522 696 319 583 98 602 940 97 700 120 816 279 263876 819 639 940 880 547 655 551 818 34 646 989::::::::::::::
B =分钟(A);C = MAX(A);

使用结果来确定阵列中的总体最大值和最小值。收集最后的结果到内存中。

[MNA,MXA] =聚集(分钟(b)中,MAX(C));
评估使用本地MATLAB会话高表达: - 通的1 1:在0.27秒评价完成在0.6秒完成
valRange = [MNA MXA]
valRange =1×21 1000

输入参数

全部收缩

未评估的高大阵列。不计算一个高大的阵列是在其上,而无需使用执行计算的任何高大的阵列收集以全面评估这些计算。

输出参数

全部收缩

内存数组中。的数据类型ÿ是一样的未计算的高大阵列的基础数据类型X

提示

  • 如果您有并行计算工具箱™,请参阅收集有关收集信息分散式gpuArray计算。

扩展功能

高大的数组
与具有较适合在内存中更多的行阵列计算。

GPU代码生成
生成使用GPU编码器™,NVIDIA®GPU的代码CUDA®。

介绍了在R2016b