Main Content

gather

대기 중인 연산을 실행한 후 tall형 배열을 메모리에 수집

설명

예제

Y = gather(X)는 계산되지 않은 tall형 배열 X를 계산하는 데 필요한 대기 중인 모든 연산을 실행하여 그 결과를 메모리에 Y로 수집합니다.

gather 계산 결과가 너무 큰 경우 MATLAB®에 메모리가 부족할 수도 있습니다. 결과를 다 넣을 수 있을 만큼 메모리가 충분한지 확신할 수 없으면 gather(head(X))gather(tail(X))를 사용하여, 전체 계산을 수행하되 결과의 일부만 메모리로 가져오십시오.

가능한 한 gather를 덜 사용하여 데이터에 대한 추가적인 통과가 계산 과정에서 결합되도록 하십시오. 자세한 내용은 Lazy Evaluation of Tall Arrays 항목을 참조하십시오.

예제

[Y1,Y2,Y3,...] = gather(X1,X2,X3,...)은 계산되지 않은 여러 tall형 배열 X1, X2, X3,...을 이에 대응되는 출력값 Y1, Y2, Y3,...으로 수집합니다.

예제

모두 축소

airlinesmall.csv 데이터 세트에 대한 데이터저장소를 만듭니다. 'NA' 값을 누락된 데이터로 처리합니다. 그러면 tabularTextDatastore가 이 값을 NaN 값으로 대체합니다. 사용할 변수는 일부를 선택합니다. 이 데이터저장소를 tall형 테이블로 변환합니다.

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'}    
     :         :              :
     :         :              :

tall형 테이블의 크기를 계산합니다.

sz = size(T)
sz =

  1x2 tall double row vector

    ?    ?

MATLAB®은 tall형 배열에 대한 대부분의 연산을 즉시 실행하지 않습니다. 대신, MATLAB은 사용자가 수행하려고 입력한 연산들을 기억하여 백그라운드에서 계산을 최적화합니다.

계산되지 않은 tall형 배열에 gather를 사용하는 경우 MATLAB은 최소한의 통과 횟수로 데이터에 접근해 대기 중인 모든 연산을 실행합니다. 이러한 최적화는 대규모 계산의 실행 시간을 크게 줄여 줍니다. 이러한 이유로, 결과를 확인해야 하는 경우에만 gather를 사용해야 합니다.

gather를 사용하여 계산을 실행하고 결과를 메모리에 수집합니다.

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

      123523           3

여러 입력값과 함께 gather를 사용하여 여러 개의 tall형 배열을 동시에 계산합니다.

1에서 1000 사이의 정수형 난수로 구성된 메모리 내 배열에서 tall형 배열을 생성합니다. 각 열의 최댓값과 최솟값을 계산합니다.

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.25 sec
Evaluation completed in 0.59 sec
valRange = [mnA mxA]
valRange = 1×2

           1        1000

입력 인수

모두 축소

계산되지 않은 tall형 배열입니다. 계산되지 않은 tall형 배열은 gather를 사용하여 계산을 완전히 실행하지 않고 계산을 수행하는 모든 tall형 배열입니다.

출력 인수

모두 축소

메모리 내 배열입니다. Y의 데이터형은 계산되지 않은 tall형 배열 X의 기본 데이터형과 동일합니다.

  • 여러 출력 인수를 반환하는 함수는 변수를 사용하여 gather에 모든 출력을 제공해야 합니다. 예를 들면 다음과 같습니다.

    [a,b] = bounds(X);
    [a,b] = gather(a,b);

  • Parallel Computing Toolbox™를 사용하는 경우 distributed 계산과 gpuArray 계산을 수집하는 방법에 대한 자세한 내용은 gather (Parallel Computing Toolbox)를 참조하십시오.

확장 기능

tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

스레드 기반 환경
MATLAB®의 backgroundPool을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool을 사용해 코드 실행 속도를 높일 수 있습니다.

버전 내역

R2016b에 개발됨