主要内容

收集

执行队列操作后,将高数组收集到内存中

描述

例子

Y=收集(X执行计算未求值高数组所需的所有队列操作X并将结果收集到内存中作为Y

MATLAB®如果内存不足的结果可以运行吗收集计算量太大。如果您不确定结果是否适合内存,请使用收集(头(X))收集(尾(X))执行完整的计算,但只将结果的一小部分放入内存。

使用收集尽可能地确保在计算过程中对经过的额外数据进行组合。有关更多信息,请参见高数组的延迟计算

例子

Y1,Y2,Y3.[答案]X1,X2,X3,…)收集多个未求值的高数组X1 x2 x3…转换成相应的输出Y1, y2, y3,…

例子

全部折叠

对象的数据存储airlinesmall.csv数据集。选择要处理的变量子集,并进行处理“NA”值作为丢失的数据,以便tabularTextDatastore将它们替换为值。将数据存储转换为一个高表。

Varnames = {“年”“ArrDelay”“UniqueCarrier”};ds = tabularTextDatastore(“airlinesmall.csv”“TreatAsMissing”“NA”...“SelectedVariableNames”, varnames);T =高(ds)
T = Mx3高表年ArrDelay UniqueCarrier  ____ ________ _____________ 8 1987 1987{“PS”}{“PS”}{“PS”}1987年1987年21日13{“PS”}{“PS”}1987 1987 59{“PS”}1987 1987 11 {{' p '} ' PS '} : : : : : :

计算一下这张高桌子的大小。

sz = size(T)
Sz = 1x2高双行向量??

MATLAB®不会立即计算高数组上的大多数操作。相反,MATLAB会在输入操作时记住它们,并在后台优化计算。

当你使用收集在一个未求值的高数组上,MATLAB使用最少的数据遍历次数来执行所有的队列操作。这种优化大大减少了大型计算的执行时间。出于这个原因,您应该使用收集只有在你需要看到结果的时候。

使用收集执行计算并将结果收集到内存中。

S = gather(sz)
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.56秒内完成评估,在0.72秒内完成
S =1×2123523年3

使用收集使用多个输入同时计算多个tall数组。

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

(randi(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 263 876 819 639 940 880 555 551 818 34 646 989::::::::::::::
b = min(A);c = max(A);

使用结果确定数组中的总体最小值和最大值。将最终结果收集到内存中。

[mnA,mxA] = gather(min(b),max(c));
使用本地MATLAB会话评估tall表达式:-通过1 / 1:在0.17秒内完成评估,在0.38秒内完成
valRange = [mnA mxA]
valRange =1×21 1000

输入参数

全部折叠

未赋值的高数组。未求值的高数组是在不使用的情况下执行计算的任何高数组收集充分评估这些计算。

输出参数

全部折叠

内存中的数组。的数据类型Y是否与未求值的高数组的底层数据类型相同X

提示

  • 如果您有并行计算工具箱™,请参见收集(并行计算工具箱)有关收集的信息分布式而且gpuArray计算。

扩展功能

高大的数组
使用行数超过内存容量的数组进行计算。

GPU代码生成
使用GPU Coder™为NVIDIA®GPU生成CUDA®代码。

版本历史

在R2016b中引入