tall

Синтаксис

Описание

пример

t = tall(ds) создает длинный массив сверху datastore ds.

  • Если ds datastore для табличных данных (так, чтобы read и readall методы datastore возвращают таблицы или расписания), затем t длинная таблица или длинное расписание, в зависимости от того, что datastore сконфигурирован, чтобы возвратить. Табличные данные являются данными, которые располагаются прямоугольным способом с каждой строкой, имеющей то же количество записей.

  • В противном случае, t высокий массив ячеек.

пример

t = tall(A) преобразует массив в оперативной памяти A в длинный массив. Базовый тип данных t совпадает с class(A). Этот синтаксис полезен, когда необходимо быстро создать длинный массив, такой что касается отладки или прототипирований алгоритмов.

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

Примеры

свернуть все

Преобразуйте datastore в длинный массив.

Во-первых, создайте datastore для набора данных. Можно задать или местоположение всего или файла прямого доступа для набора данных с помощью datastore(location) создать datastore. location аргумент может задать:

  • Один файл, такой как 'airlinesmall.csv'

  • Несколько файлов с тем же расширением, таких как '*.csv'

  • Целая папка файлов, таких как 'C:\MyData'

tabularTextDatastore также имеет несколько опций, чтобы задать формат файла и свойства текстового формата, когда вы создаете datastore.

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

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

Используйте tall создать длинный массив для данных в datastore. Начиная с данных в ds является табличным, результатом является длинная таблица. Если данные не являются табличными, то tall создает высокий массив ячеек вместо этого.

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® и функций, чтобы работать с длинными массивами. Чтобы видеть, работает ли функция с длинными массивами, проверяйте раздел Extended Capabilities в нижней части страницы ссылки на функцию.

Преобразуйте datastore в длинную таблицу, вычислите ее размер с помощью задержанного вычисления, и затем выполните вычисление и возвратите результат в память.

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

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

Отображение длинной таблицы указывает, что MATLAB® еще не знает, сколько строк данных находится в таблице.

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

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 1.2 sec
Evaluation completed in 1.4 sec
sz = 1×2

      123523          29

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

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

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 и более поздних релизах, когда вы преобразуете массивы в оперативной памяти в длинные массивы, можно выполнить вычисления на массиве, не требуя дополнительной памяти для временных копий данных. Например, этот код нормирует данные в большой матрице и затем вычисляет сумму всех строк и столбцов. Версия в оперативной памяти этого вычисления должна не только сохранить массив на 5 ГБ, но также и иметь достаточно памяти в наличии, чтобы создать временные копии массива.

N = 25000;
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 2.9 sec
- Pass 2 of 2: Completed in 4.7 sec
Evaluation completed in 8 sec
S = -3.1878e-10

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

свернуть все

Введите datastore в виде объекта datastore. Смотрите Datastore для получения дополнительной информации о создании объекта datastore для вашего набора данных.

Длинные массивы работают только с хранилищами данных, которые детерминированы. Таким образом, если вы используете read на datastore, сброс datastore с reset, и затем считайте datastore снова, затем возвращенные данные должны быть тем же самым в обоих случаях. Вычисления длинного массива, включающие datastore, который не детерминирован, могут привести к непредсказуемым результатам. Смотрите Выбирают Datastore for File Format или Application для получения дополнительной информации.

Пример: 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
Поддержка комплексного числа: Да

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

свернуть все

Длинный массив, возвращенный как один из этих типов:

  • При преобразовании datastore, t длинная таблица или длинное расписание для табличных хранилищ данных. В противном случае, t высокий массив ячеек.

  • При преобразовании массива в оперативной памяти, базового типа данных t совпадает с class(A).

Смотрите Отсроченную оценку Длинных массивов для получения информации о том, как эффективно работать с длинными массивами.

Советы

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

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

Введенный в R2017b