arrayDatastore

Datastore для данных в памяти

Описание

Использование ArrayDatastore объект для управления datastore, созданной из данных в памяти. Можно создать ArrayDatastore объект с использованием arrayDatastore function, задайте его свойства, а затем импортируйте и обрабатывайте данные с помощью функций object.

Создание

Описание

пример

arrds = arrayDatastore(A) создает хранилище datastore arrds из A массива хранится в памяти.

пример

arrds = arrayDatastore(A,Name,Value) задает дополнительные параметры и свойства для arrds использование одного или нескольких аргументов пары "имя-значение". Например, задайте, что каждый вызов к read функция считывает три строки данных путем вызова arrds = arrayDatastore(data,"ReadSize",3).

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

расширить все

Входной массив, заданный как матрица.

Свойства

расширить все

ArrayDatastore свойства описывают формат данных в памяти в объекте datastore и управляют чтением данных из datastore. Можно задать значение ArrayDatastore свойства с использованием аргументов пары "имя-значение" при создании объекта datastore. Чтобы просмотреть или изменить свойство после создания объекта, используйте запись через точку.

Объем данных для чтения в вызове на read функция, заданная как разделенная разделенными запятой парами, состоящая из 'ReadSize' и положительное целое число. Каждый вызов для read считывает максимум ReadSize строки. Если вы задаете значение для 'ReadSize' что превышает количество строк во входных данных, read считывает все строки в объекте datastore.

Значение по умолчанию 'ReadSize' является 1.

Типы данных: double

Размерность, в котором можно считать в вызове read функция, заданная как разделенная разделенными запятой парами, состоящая из 'IterationDimension' и положительное целое число. Для примера, 'IterationDimension',2 делает read возвращает данные, ориентированные на столбцы, из объекта datastore. Значение по умолчанию 'IterationDimension' является 1, что делает read возврат ориентированных на строку данных..

Если вы задаете значение 'OutputType' свойство как 'same', затем 'IterationDimension' должно быть установлено значение 1.

Если вы изменяете значение 'IterationDimension' после создания ArrayDatastore объект, MATLAB® устанавливает хранилище datastore в непрочитанное состояние.

Типы данных: double

Выход данных, заданный как разделенная разделенными запятой парами, состоящая из 'OutputType' и одно из следующих значений:

  • 'cell' - Верните данные как массив ячеек n на 1. Для примера, если A является числовым массивом и ReadSize является 3, read возвращает массив ячеек 3 на 1 с числовыми данными.

  • 'same' - Возвращает тот совпадающий тип данных, что и входной массив A. Для примера, если A является числовым массивом, read возвращает числовые массивы.

Значение OutputType определяет тип данных, возвращаемых preview, read, и readall функций.

Если вы изменяете значение 'OutputType' после создания ArrayDatastore Объект устанавливает хранилище datastore в непрочитанное состояние.

Типы данных: char | string

Функции объекта

hasdataОпределите, доступны ли данные для чтения
numpartitionsКоличество разделов datastore
partitionРаздел datastore
previewПредварительный просмотр подмножества данных в datastore
readЧтение данных в datastore
readallЧтение всех данных в datastore
resetСбросьте datastore в начальное состояние
transformПреобразуйте datastore
combineОбъедините данные из нескольких хранилищ данных
shuffleПеретащите все данные в datastore
subsetСоздайте подмножество datastore или набора файлов

Примеры

свернуть все

Создайте ArrayDatastore объект из матрицы, затем считайте все данные в datastore.

Создайте матрицу.

A = magic(10)
A = 10×10

    92    99     1     8    15    67    74    51    58    40
    98    80     7    14    16    73    55    57    64    41
     4    81    88    20    22    54    56    63    70    47
    85    87    19    21     3    60    62    69    71    28
    86    93    25     2     9    61    68    75    52    34
    17    24    76    83    90    42    49    26    33    65
    23     5    82    89    91    48    30    32    39    66
    79     6    13    95    97    29    31    38    45    72
    10    12    94    96    78    35    37    44    46    53
    11    18   100    77    84    36    43    50    27    59

Создайте ArrayDatastore объект из матрицы.

arrds = arrayDatastore(A)
arrds = 
  ArrayDatastore with properties:

              ReadSize: 1
    IterationDimension: 1
            OutputType: "cell"

Считайте все данные в datastore.

readall(arrds)
ans=10×1 cell array
    {[   92 99 1 8 15 67 74 51 58 40]}
    {[  98 80 7 14 16 73 55 57 64 41]}
    {[  4 81 88 20 22 54 56 63 70 47]}
    {[  85 87 19 21 3 60 62 69 71 28]}
    {[   86 93 25 2 9 61 68 75 52 34]}
    {[ 17 24 76 83 90 42 49 26 33 65]}
    {[  23 5 82 89 91 48 30 32 39 66]}
    {[  79 6 13 95 97 29 31 38 45 72]}
    {[ 10 12 94 96 78 35 37 44 46 53]}
    {[11 18 100 77 84 36 43 50 27 59]}

Верните те совпадающие типы данных, что и входной массив, вместо возврата данных в виде массива ячеек n на 1.

Составьте таблицу из файла электронной таблицы counties.xlsx. Импортируйте все строки из пятого-десятого столбцов в электронной таблице.

T = readtable("counties.xlsx","Range",[1,5,67,10])
T=66×6 table
          CountyName           State        StateName       Population2010    HousingUnits2010     LandArea 
    _______________________    ______    _______________    ______________    ________________    __________

    {'Fairfield County'   }    {'CT'}    {'Connecticut'}      9.1683e+05         3.6122e+05       1.6185e+09
    {'Hartford County'    }    {'CT'}    {'Connecticut'}      8.9401e+05         3.7425e+05       1.9039e+09
    {'Litchfield County'  }    {'CT'}    {'Connecticut'}      1.8993e+05              87550       2.3842e+09
    {'Middlesex County'   }    {'CT'}    {'Connecticut'}      1.6568e+05              74837       9.5649e+08
    {'New Haven County'   }    {'CT'}    {'Connecticut'}      8.6248e+05           3.62e+05       1.5657e+09
    {'New London County'  }    {'CT'}    {'Connecticut'}      2.7406e+05         1.2099e+05        1.722e+09
    {'Tolland County'     }    {'CT'}    {'Connecticut'}      1.5269e+05              57963       1.0624e+09
    {'Windham County'     }    {'CT'}    {'Connecticut'}      1.1843e+05              49073       1.3284e+09
    {'Androscoggin County'}    {'ME'}    {'Maine'      }       1.077e+05              49090       1.2119e+09
    {'Aroostook County'   }    {'ME'}    {'Maine'      }           71870              39529       1.7279e+10
    {'Cumberland County'  }    {'ME'}    {'Maine'      }      2.8167e+05         1.3866e+05       2.1633e+09
    {'Franklin County'    }    {'ME'}    {'Maine'      }           30768              21709       4.3942e+09
    {'Hancock County'     }    {'ME'}    {'Maine'      }           54418              40184         4.11e+09
    {'Kennebec County'    }    {'ME'}    {'Maine'      }      1.2215e+05              60972       2.2469e+09
    {'Knox County'        }    {'ME'}    {'Maine'      }           39736              23744       9.4569e+08
    {'Lincoln County'     }    {'ME'}    {'Maine'      }           34457              23493       1.1806e+09
      ⋮

Создайте datastore из таблицы. Задайте 'OutputType' на 'same' чтобы вернуть совпадающим типам данных как вход таблицу.

arrds = arrayDatastore(T,"OutputType","same")
arrds = 
  ArrayDatastore with properties:

              ReadSize: 1
    IterationDimension: 1
            OutputType: "same"

Предварительный просмотр данных в datastore.

preview(arrds)
ans=8×6 table
         CountyName          State        StateName       Population2010    HousingUnits2010     LandArea 
    _____________________    ______    _______________    ______________    ________________    __________

    {'Fairfield County' }    {'CT'}    {'Connecticut'}      9.1683e+05         3.6122e+05       1.6185e+09
    {'Hartford County'  }    {'CT'}    {'Connecticut'}      8.9401e+05         3.7425e+05       1.9039e+09
    {'Litchfield County'}    {'CT'}    {'Connecticut'}      1.8993e+05              87550       2.3842e+09
    {'Middlesex County' }    {'CT'}    {'Connecticut'}      1.6568e+05              74837       9.5649e+08
    {'New Haven County' }    {'CT'}    {'Connecticut'}      8.6248e+05           3.62e+05       1.5657e+09
    {'New London County'}    {'CT'}    {'Connecticut'}      2.7406e+05         1.2099e+05        1.722e+09
    {'Tolland County'   }    {'CT'}    {'Connecticut'}      1.5269e+05              57963       1.0624e+09
    {'Windham County'   }    {'CT'}    {'Connecticut'}      1.1843e+05              49073       1.3284e+09

Создайте datastore для переменной MAT-файла, а затем считайте данные из файла с другими ReadSize значения.

Загрузите MAT-файл BostonWeatherData.mat в рабочую область.

load 'BostonWeatherData.mat'

Создайте datastore для weatherData переменная. Задайте ReadSize на 10 строки. Значение ReadSize определяет, сколько строк данных считывается из datastore при каждом вызове read функция. Задайте 'OutputType' на 'same' чтобы вернуть те совпадающие типы данных, что и входной массив.

arrds = arrayDatastore(weatherData,"ReadSize",10, "OutputType","same")
arrds = 
  ArrayDatastore with properties:

              ReadSize: 10
    IterationDimension: 1
            OutputType: "same"

Считайте данные из datastore.

data1 = read(arrds)
data1=10×3 timetable
       Time        TemperatureF    Humidity       Events   
    ___________    ____________    ________    ____________

    01-Jul-2015         72            78       Thunderstorm
    02-Jul-2015         72            60       None        
    03-Jul-2015         70            56       None        
    04-Jul-2015         67            75       None        
    05-Jul-2015         72            67       None        
    06-Jul-2015         74            69       None        
    07-Jul-2015         75            77       Rain        
    08-Jul-2015         79            68       Rain        
    09-Jul-2015         66            77       Rain        
    10-Jul-2015         69            74       Rain        

Установите ReadSize значение свойства к 30 и прочтите из datastore. Второй вызов на read функция считывает следующие 30 строк из datastore.

arrds.ReadSize = 30;

Считайте данные из datastore.

data2 = read(arrds)
data2=30×3 timetable
       Time        TemperatureF    Humidity    Events
    ___________    ____________    ________    ______

    11-Jul-2015         76            49        None 
    12-Jul-2015         81            54        None 
    13-Jul-2015         72            81        None 
    14-Jul-2015         74            72        Rain 
    15-Jul-2015         75            87        Rain 
    16-Jul-2015         64            65        None 
    17-Jul-2015         68            72        None 
    18-Jul-2015         71            81        Rain 
    19-Jul-2015         81            73        Rain 
    20-Jul-2015         81            62        None 
    21-Jul-2015         76            66        None 
    22-Jul-2015         77            58        None 
    23-Jul-2015         75            52        None 
    24-Jul-2015         74            60        Rain 
    25-Jul-2015         66            81        None 
    26-Jul-2015         71            79        Rain 
      ⋮

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

Загрузите видео данных. Создайте VideoReader объект из файла xylophone.mp4.

v = VideoReader('xylophone.mp4');

Чтение всех видеокадров из VideoReader объект в рабочую область.

allFrames = read(v);

Создайте datastore из считанных систем координат. Задайте 'IterationDimension' на 4 для чтения данных по четвертой размерности. Задайте 'OutputType' на 'cell' для возврата данных в виде массива ячеек. Задайте 'ReadSize' чтобы 4 считать четыре видеокадра в каждом вызове read функция.

arrds = arrayDatastore(allFrames,"IterationDimension",4,"OutputType","cell","ReadSize",4)
arrds = 
  ArrayDatastore with properties:

              ReadSize: 4
    IterationDimension: 4
            OutputType: "cell"

Чтение и отображение первых четырех видеокадров в datastore в виде прямоугольного мозаичного изображения.

frames = read(arrds);
imout = imtile(frames);
imshow(imout)

Figure contains an axes. The axes contains an object of type image.

Совет

  • Можно объединить и преобразовать ArrayDatastore объекты с хранилищами данных, которые содержат данные на диске (такие как ImageDatastore и TabularTextDatastore объектов) с использованием combine и transform функций.

См. также

|

Введенный в R2020b