gather

Сбор длинный массив в память после выполнения операций в очереди

Описание

пример

Y = gather(X) выполняет все операции в очереди, необходимые для вычисления недооценённый длинный массив X и собирает результаты в память как Y.

MATLAB® может иссякнуть память, если результат gather вычисление слишком велико. Если вы не уверены, может ли результат помещаться в памяти, используйте gather(head(X)) или gather(tail(X)) выполнить полное вычисление, но принести в память только небольшой фрагмент результата.

Использовать gather экономно, чтобы убедиться, что дополнительные проходы через данные объединяются во время вычислений, когда это возможно. Для получения дополнительной информации смотрите Отсроченная оценка длинных массивов.

пример

[Y1,Y2,Y3,...] = gather(X1,X2,X3,...) собирает несколько недооценённые длинные массивы X1, X2, X3,... в соответствующие выходы Y1, Y2, Y3,....

Примеры

свернуть все

Создайте datastore для airlinesmall.csv набор данных. Выберите подмножество переменных для работы и обработки 'NA' значения как отсутствующие данные, так что tabularTextDatastore заменяет их на NaN значения. Преобразуйте datastore в длинная таблица.

varnames = {'Year','ArrDelay','UniqueCarrier'};
ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA',...
    'SelectedVariableNames',varnames);
T = tall(ds)
T =

  Mx3 tall table

    Year    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 = size(T)
sz =

  1x2 tall double row vector

    ?    ?

MATLAB ® не сразу оценивает большинство операций на длинных массивах. Вместо этого MATLAB запоминает операции, которые вы выполняете, вводя их, и оптимизирует вычисления в фоновом режиме .

Когда вы используете gather в недооценённый длинный массив MATLAB выполняет все операции в очереди, используя минимальное количество проходов через данные. Эта оптимизация значительно сокращает время выполнения больших вычислений. По этой причине следует использовать gather только когда вам нужно увидеть результат.

Использование gather чтобы выполнить вычисление и собрать результат в память.

S = gather(sz)
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.81 sec
Evaluation completed in 1 sec
S = 1×2

      123523           3

Использование gather с несколькими входами для одновременной оценки нескольких длинных массивов.

Создайте длинный массив из массива в памяти со случайными целыми числами от 1 до 1000. Вычислите максимальное и минимальное значения в каждом столбце.

A = tall(randi(1000,100,7))
A =

  100x7 tall double matrix

   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
   547   655   551   818    34   646   989
    :     :     :     :     :     :     :
    :     :     :     :     :     :     :
b = min(A);
c = max(A);

Используйте результаты, чтобы определить общее минимальное и максимальное значения в массиве. Соберите конечный результат в память.

[mnA,mxA] = gather(min(b),max(c));
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: Completed in 0.26 sec
Evaluation completed in 0.56 sec
valRange = [mnA mxA]
valRange = 1×2

           1        1000

Входные параметры

свернуть все

Недооценённый длинный массив. Недооценённый длинный массив является любой длинный массив, на котором вы выполняете вычисления, не используя gather чтобы полностью оценить эти расчеты.

Выходные аргументы

свернуть все

Массив в памяти. Тип данных Y аналогичен базовому типу данных недооценённый длинный массив X.

Совет

  • Если у вас есть Toolbox™ Parallel Computing, см. gather (Parallel Computing Toolbox) для получения информации о сборе distributed и gpuArray расчеты.

Расширенные возможности

Длинные» массивы
Осуществление вычислений с массивами, которые содержат больше строк, чем помещается в памяти.

Генерация кода GPU
Сгенерируйте код CUDA ® для графических процессоров NVIDIA ® с помощью GPU Coder™

.
Введенный в R2016b