exponenta event banner

arrayDatastore

Хранилище данных для данных в памяти

Описание

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

Создание

Описание

пример

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

пример

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

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

развернуть все

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

Свойства

развернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Примеры

свернуть все

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

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

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"

Прочтите все данные в хранилище данных.

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-by-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
      ⋮

Создайте хранилище данных из таблицы. Набор 'OutputType' кому 'same' для возврата тех же типов данных, что и входная таблица.

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

              ReadSize: 1
    IterationDimension: 1
            OutputType: "same"

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

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

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

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

load 'BostonWeatherData.mat'

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

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

              ReadSize: 10
    IterationDimension: 1
            OutputType: "same"

Считывание данных из хранилища данных.

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 и чтение из хранилища данных. Второй вызов read функция считывает следующие 30 строк из хранилища данных.

arrds.ReadSize = 30;

Считывание данных из хранилища данных.

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);

Создайте хранилище данных из прочитанных кадров. Набор '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"

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

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