Main Content

tall

説明

t = tall(ds) は、データストア ds に重なる tall 配列を作成します。

  • ds が表形式データのデータストアである場合 (これによりデータストアの read メソッドおよび readall メソッドが table または tall timetable を返します)、t は、データストアが何を返すように設定されているかに応じて、tall table または tall timetable になります。表形式データとは、各行に同数のエントリをもつ四角形の表として配置されたデータです。

  • それ以外の場合、t は tall cell 配列です。

t = tall(A) は、インメモリ配列 A を tall 配列に変換します。t の基となるデータ型は class(A) と同じです。この構文は、アルゴリズムのデバッグ、プロトタイピングなどのために、tall 配列をすばやく作成する必要がある場合に役立ちます。

R2019b 以降、インメモリ配列を tall 配列にキャストして、配列の演算をより効率的に行うことができます。tall 配列に変換すると、MATLAB® は、配列全体の一時コピーの作成を回避し、より小さなブロックでデータを操作します。これにより、メモリ不足を発生させずに、配列に対してより広範囲な演算を実行できます。

すべて折りたたむ

データストアを tall 配列に変換します。

最初にデータ セットのデータストアを作成します。datastore(location) を使用して、データ セットのファイルの場所を絶対パスまたは相対パスで指定してデータストアを作成できます。location 引数で以下を指定できます。

  • 'airlinesmall.csv' などの単一のファイル

  • '*.csv' などの同じ拡張子をもつ複数のファイル

  • 'C:\MyData' などのファイル フォルダー全体

また、tabularTextDatastore には、データストアの作成時にファイルおよびテキスト形式のプロパティを指定するオプションがいくつかあります。

airlinesmall.csv データ セットのデータストアを作成します。'NA' 値を欠損データとして処理し、NaN 値と置き換えます。使用する変数の小さいサブセットを選択します。

varnames = {'ArrDelay', 'DepDelay', 'Origin', 'Dest'};
ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA', ...
    'SelectedVariableNames', varnames);

tall を使用して、データストア内のデータの tall 配列を作成します。ds 内のデータが表形式であるため、結果は tall table になります。データが表形式ではない場合、tall は代わりに tall cell 配列を作成します。

T = tall(ds)
T =

  Mx4 tall table

    ArrDelay    DepDelay    Origin      Dest  
    ________    ________    _______    _______

        8          12       {'LAX'}    {'SJC'}
        8           1       {'SJC'}    {'BUR'}
       21          20       {'SAN'}    {'SMF'}
       13          12       {'BUR'}    {'SJC'}
        4          -1       {'SMF'}    {'LAX'}
       59          63       {'LAX'}    {'SJC'}
        3          -2       {'SAN'}    {'SFO'}
       11          -1       {'SEA'}    {'LAX'}
       :           :           :          :
       :           :           :          :

多くの一般的な MATLAB® 演算子と関数を使用して、tall 配列を処理できます。関数が tall 配列に対して動作するかを確認するには、関数リファレンス ページの末尾の「拡張機能」の節をチェックしてください。

データストアを tall table に変換し、遅延計算を使用してそのサイズを計算してから、計算を実行して結果をメモリに返します。

最初に airlinesmall.csv データ セットのデータストアを作成します。'NA' 値を欠損データとして処理し、NaN 値と置き換えます。いくつかの列のテキスト形式を設定して、これらが文字ベクトルの cell 配列として読み取られるようにします。データストアを tall table に変換します。

ds = tabularTextDatastore('airlinesmall.csv', 'TreatAsMissing', 'NA');
ds.SelectedFormats{strcmp(ds.SelectedVariableNames, 'TailNum')} = '%s';
ds.SelectedFormats{strcmp(ds.SelectedVariableNames, 'CancellationCode')} = '%s';
T = tall(ds)
T =

  Mx29 tall table

    Year    Month    DayofMonth    DayOfWeek    DepTime    CRSDepTime    ArrTime    CRSArrTime    UniqueCarrier    FlightNum    TailNum    ActualElapsedTime    CRSElapsedTime    AirTime    ArrDelay    DepDelay    Origin      Dest      Distance    TaxiIn    TaxiOut    Cancelled    CancellationCode    Diverted    CarrierDelay    WeatherDelay    NASDelay    SecurityDelay    LateAircraftDelay
    ____    _____    __________    _________    _______    __________    _______    __________    _____________    _________    _______    _________________    ______________    _______    ________    ________    _______    _______    ________    ______    _______    _________    ________________    ________    ____________    ____________    ________    _____________    _________________

    1987     10          21            3          642          630         735          727          {'PS'}          1503       {'NA'}             53                 57            NaN          8          12       {'LAX'}    {'SJC'}      308        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10          26            1         1021         1020        1124         1116          {'PS'}          1550       {'NA'}             63                 56            NaN          8           1       {'SJC'}    {'BUR'}      296        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10          23            5         2055         2035        2218         2157          {'PS'}          1589       {'NA'}             83                 82            NaN         21          20       {'SAN'}    {'SMF'}      480        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10          23            5         1332         1320        1431         1418          {'PS'}          1655       {'NA'}             59                 58            NaN         13          12       {'BUR'}    {'SJC'}      296        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10          22            4          629          630         746          742          {'PS'}          1702       {'NA'}             77                 72            NaN          4          -1       {'SMF'}    {'LAX'}      373        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10          28            3         1446         1343        1547         1448          {'PS'}          1729       {'NA'}             61                 65            NaN         59          63       {'LAX'}    {'SJC'}      308        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10           8            4          928          930        1052         1049          {'PS'}          1763       {'NA'}             84                 79            NaN          3          -2       {'SAN'}    {'SFO'}      447        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
    1987     10          10            6          859          900        1134         1123          {'PS'}          1800       {'NA'}            155                143            NaN         11          -1       {'SEA'}    {'LAX'}      954        NaN        NaN          0             {'NA'}            0            NaN             NaN           NaN            NaN                NaN       
     :        :          :             :           :           :            :           :               :              :           :               :                  :              :          :           :           :          :          :          :          :           :               :               :             :               :             :              :                  :
     :        :          :             :           :           :            :           :               :              :           :               :                  :              :          :           :           :          :          :          :          :           :               :               :             :               :             :              :                  :

tall table の表示は、MATLAB® で table 内にあるデータ行の数が判別していないことを示しています。

tall table のサイズを計算します。tall 配列のサイズの計算では、データを完全に通す必要があるため、MATLAB では値が即座には計算されません。代わりに、tall 配列の多くの操作と同様に、値とサイズが現在不明である未評価の tall 配列が結果になります。

s = size(T)
s =

  1x2 tall double row vector

    ?    ?

関数 gather を使用して、遅延計算を実行して結果をメモリに返します。size で返される結果は非常に小さい 1 行 2 列のベクトルで、メモリに収まります。

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

      123523          29

gather を縮小されていない tall 配列に対して使用すると、結果がメモリに収まらない場合があります。gather で返される結果がメモリに収まるかどうかが不明な場合、gather(head(X)) または gather(tail(X)) を使用して、計算結果のごく一部だけをメモリに返します。

乱数のインメモリ配列を作成し、tall 配列に変換します。この方法でインメモリ配列から tall 配列を作成すると、新しいプログラムのデバッグまたはプロトタイピングに役立ちます。インメモリ配列は、引き続き標準のメモリ制約により制限され、tall 配列に変換された後もメモリの制限を超えて拡張できません。

A = rand(100,4);
tA = tall(A)
tA =

  100x4 tall double matrix

    0.8147    0.1622    0.6443    0.0596
    0.9058    0.7943    0.3786    0.6820
    0.1270    0.3112    0.8116    0.0424
    0.9134    0.5285    0.5328    0.0714
    0.6324    0.1656    0.3507    0.5216
    0.0975    0.6020    0.9390    0.0967
    0.2785    0.2630    0.8759    0.8181
    0.5469    0.6541    0.5502    0.8175
      :         :         :         :
      :         :         :         :

R2019b 以降のリリースでは、インメモリ配列を tall 配列に変換すると、データの一時コピー用の追加メモリなしで配列の計算を実行できます。たとえば、次のコードは大きな行列のデータを正規化してから、すべての行と列の合計を計算します。この計算のインメモリ バージョンでは、配列を格納しなければならないうえに、配列の一時コピーを作成するために十分なメモリも必要です。

N = 5000;
tA = tall(rand(N));
tB = tA - mean(tA);
S = gather(sum(tB, [1,2]))
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 2: Completed in 0.39 sec
- Pass 2 of 2: Completed in 0.52 sec
Evaluation completed in 1.5 sec
S = -1.0004e-11

tA を格納するために十分なメモリが確保されるように N の値を調整したが、コピー用にはメモリが不足している場合でも、計算は正常に実行されます。

入力引数

すべて折りたたむ

入力データストア。datastore オブジェクトとして指定します。データ セットに datastore オブジェクトを作成する方法の詳細については、データストアを参照してください。

tall 配列で使用できるのは確定的なデータストアのみです。つまり、データストアで read を使用する場合、reset を使用してデータストアをリセットしてから、データストアを再度読み込みます。返されるデータはどちらの場合も同じでなければなりません。確定的でないデータストアが含まれる tall 配列の計算では、予測できない結果が生じる可能性があります。詳細については、ファイル形式またはアプリケーション用のデータ ストアの選択を参照してください。

例: ds = tabularTextDatastore('airlinesmall.csv') は単一のファイルを指定します。

例: ds = tabularTextDatastore('*.csv').csv ファイルの集合を指定します。

例: ds = spreadsheetDatastore('C:\MyData') は、スプレッドシート ファイルのフォルダーを指定します。

例: ds = datastore('hdfs:///data/') は HDFS ファイル システム内のデータ セットを指定します。

インメモリ変数。配列として指定します。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable | string | cell | categorical | datetime | duration | calendarDuration
複素数のサポート: あり

出力引数

すべて折りたたむ

tall 配列。次の型のいずれかとして返されます。

  • データストアを変換する場合、t は表形式データストアの tall table または tall timetable です。それ以外の場合、t は tall cell 配列です。

  • インメモリ配列を変換する場合、t の基となるデータ型は class(A) と同じです。

tall 配列の効率的な処理方法の詳細については、tall 配列の遅延評価を参照してください。

ヒント

  • 以下で tall 配列を使用する方法については、他の製品による tall 配列の拡張を参照してください。

    • Statistics and Machine Learning Toolbox™

    • Parallel Computing Toolbox™

    • MATLAB Parallel Server™

    • Database Toolbox™

    • MATLAB Compiler™

拡張機能

tall 配列
メモリの許容量を超えるような多数の行を含む配列を計算します。

バージョン履歴

R2016b で導入