fileDatastore

Datastore с пользовательским средством чтения файлов

Описание

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

Создание

Синтаксис

fds = fileDatastore(location,'ReadFcn',@fcn)
fds = fileDatastore(location,Name,Value)

Описание

fds = fileDatastore(location,'ReadFcn',@fcn) создает datastore из набора файлов, заданных location, и использует функциональный fcn, чтобы считать данные из файлов.

пример

fds = fileDatastore(location,Name,Value) задает дополнительные параметры и свойства для fds с помощью одного или нескольких аргументов в виде пар "имя-значение". Например, можно задать который файлы включать в datastore в зависимости от их расширений с fileDatastore(location,'ReadFcn',@customreader,'FileExtensions',{'.exts','.extx'}).

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

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

Файлы или папки, чтобы включать в datastore, заданный как вектор символа, массив ячеек из символьных векторов, представляют в виде строки скаляр или массив строк. Если файлы не находятся в текущей папке, то location должен быть полными или относительными путями. Файлы в подпапках заданной папки автоматически не включены в datastore.

Можно использовать подстановочный символ (*) при определении location. Этот символ указывает, что все файлы соответствия или все файлы в соответствующих папках включены в datastore.

Если файлы не доступны локально, то полный путь файлов или папок должен быть интернационализировавшим идентификатором ресурса (IRI) формы
hdfs:///path_to_file.

Для получения информации об использовании datastore с Amazon S3™ Устройство хранения данных Windows Azure® Blob и HDFS™, видят работу с Удаленными данными.

Пример: 'file1.ext'

Пример: '../dir/data/file1.ext'

Пример: C: \dir\data\file1.exts','C:\dir\data\file2.extx'}

Пример: C: \dir\data\*.ext'

Типы данных: char | ячейка | строка

Функция, которая считывает данные файла, заданные как указатель на функцию. Как минимум функция берет имя файла в качестве входного параметра, и затем это выводит соответствующие данные файла. Например, если customreader является заданной функцией, чтобы считать файл, то это должно иметь подпись, подобную следующему:

function data = customreader(filename)
..
end
Если существует больше чем один выходной аргумент, то datastore использует только первый аргумент и игнорирует остальных.

Значение, заданное в @fcn, устанавливает значение свойства ReadFcn.

Пример: @customreader

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

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: fds = fileDatastore ('C:\dir\data', 'FileExtensions', {.exts ', '.extx'})

Флаг включения подпапки, заданный как пара, разделенная запятой, состоящая из 'IncludeSubfolders' и true, false, 0, или 1. Задайте true, чтобы включать все файлы и подпапки в каждой папке или false, чтобы включать только файлы в каждой папке.

Если вы не задаете 'IncludeSubfolders', то значением по умолчанию является false.

Пример: 'IncludeSubfolders', верный

Типы данных: логический | дважды

Пользовательские расширения файла формата, заданные как пара, разделенная запятой, состоящая из 'FileExtensions' и вектора символа, массива ячеек из символьных векторов, представляют в виде строки скаляр или массив строк.

Когда вы задаете расширение файла, функция fileDatastore создает объект datastore только для файлов с заданным расширением. Можно также создать datastore для файлов без любых расширений путем определения 'FileExtensions' как пустого символьного вектора, ''. Если вы не задаете 'FileExtensions', то fileDatastore автоматически включает все файлы в папке.

Пример: 'FileExtensions'

Пример: 'FileExtensions' . расширение'

Пример: 'FileExtensions' . расширения, '.extx'}

Типы данных: char | ячейка | строка

Альтернативные пути к корню файловой системы, заданные как пара, разделенная запятой, состоящая из 'AlternateFileSystemRoots' и вектора строки или массива ячеек. Используйте 'AlternateFileSystemRoots', когда вы создадите datastore на локальной машине, но должны будете получить доступ и обработать данные на другой машине (возможно различной операционной системы). Кроме того, при обрабатывании данных с помощью Параллельных вычислений Toolbox™ и MATLAB® Distributed Computing Server™ и данные сохранены на локальных машинах с копией доступных данных на облаке другой платформы или кластерных машинах, необходимо использовать 'AlternateFileSystemRoots', чтобы сопоставить корневые пути.

  • Чтобы сопоставить набор корневых путей, которые эквивалентны друг другу, задайте 'AlternateFileSystemRoots' как вектор строки. Например,

    ["Z:\datasets","/mynetwork/datasets"]

  • Чтобы сопоставить несколько наборов корневых путей, которые эквивалентны для datastore, задайте 'AlternateFileSystemRoots' как массив ячеек, содержащий несколько строк, где каждая строка представляет набор эквивалентных корневых путей. Задайте каждую строку в массиве ячеек или как вектор строки или как массив ячеек из символьных векторов. Например:

    • Задайте 'AlternateFileSystemRoots' как массив ячеек векторов строки.

      {["Z:\datasets", "/mynetwork/datasets"];...
       ["Y:\datasets", "/mynetwork2/datasets","S:\datasets"]}

    • Также задайте 'AlternateFileSystemRoots' как массив ячеек массива ячеек из символьных векторов.

      {{'Z:\datasets','/mynetwork/datasets'};...
       {'Y:\datasets', '/mynetwork2/datasets','S:\datasets'}}

Значение 'AlternateFileSystemRoots' должно удовлетворить эти условия:

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

  • Каждая строка задает несколько корневых путей, и каждый корневой путь должен содержать по крайней мере два символа.

  • Корневые пути уникальны и не являются подпапками друг друга.

  • Содержит по крайней мере одну корневую запись пути, которая указывает на местоположение файлов.

Для получения дополнительной информации смотрите Настроенный Datastore для Обработки на Различных Машинах или Кластерах.

Пример: Z: \datasets"",/mynetwork/datasets"]

Типы данных: представьте в виде строки | ячейка

Свойства

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

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

Файлы, включенные в datastore, разрешенный как вектор символа, массив ячеек из символьных векторов, представляют в виде строки скаляр или массив строк, где каждый вектор символа или строка являются полным путем к файлу. Аргумент location в fileDatastore и функциях datastore задает Files, когда datastore создается.

Пример: C: \dir\data\file1.ext'; 'C:\dir\data\file2.ext'}

Пример: 'hdfs:///data/*.mat'

Типы данных: char | ячейка | строка

Функция, которая считывает данные файла, заданные как указатель на функцию. Функция должна взять имя файла в качестве входного параметра, и затем вывести соответствующие данные файла. Например, если customreader является заданной функцией, чтобы считать файл, то это должно иметь подпись, подобную следующему:

function data = customreader(filename)
...
end
Если существует больше чем один выходной аргумент, то только первое используется, и остальные проигнорированы.

Пример: @customreader

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

Это свойство доступно только для чтения.

Вертикально concatenateable флаг, заданный как логический true или false. Задайте значение этого свойства, когда вы сначала создадите объект FileDatastore.

tRUE

Несколько чтений объекта FileDatastore возвращают универсальные данные, который вертикально concatenateable.

Когда значением свойства UniformRead является true:

  • Функция ReadFcn должна возвратить данные, который вертикально concatenateable; в противном случае метод readall возвращает ошибку.

  • Базовый тип данных вывода функции tall совпадает с типом данных вывода от ReadFcn.

false (значение по умолчанию)

Несколько чтений объекта FileDatastore не возвращают универсальные данные, который вертикально concatenateable.

Когда значением свойства UniformRead является false:

  • readall возвращает массив ячеек.

  • tall возвращает высокий массив ячеек.

Пример: fds = fileDatastore (местоположение, 'ReadFcn',@load, 'UniformRead', верный)

Типы данных: логический | дважды

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

hasdataОпределите, доступны ли Данные в Чтение
numpartitionsКоличество разделов datastore
разделРазделите datastore
предварительный просмотрПодмножество данных в datastore
чтениеСчитайте данные в datastore
readallСчитывайте все данные в datastore
сбросСброс Datastore к начальному состоянию

Примеры

свернуть все

Создайте datastore, содержащий все файлы .mat в папке MATLAB® demos, задав функцию load, чтобы считать данные файла.

fds = fileDatastore(fullfile(matlabroot,'toolbox','matlab','demos'),'ReadFcn',@load,'FileExtensions','.mat')
fds = 

  FileDatastore with properties:

                       Files: {
                              ' ...\matlab\toolbox\matlab\demos\accidents.mat';
                              ' ...\matlab\toolbox\matlab\demos\airfoil.mat';
                              ' ...\matlab\toolbox\matlab\demos\airlineResults.mat'
                               ... and 37 more
                              }
                 UniformRead: 0
                     ReadFcn: @load
    AlternateFileSystemRoots: {}

Считайте первый файл в datastore, и затем считайте второй файл.

data1 = read(fds);
data2 = read(fds);

Считайте все файлы в datastore одновременно.

readall(fds);

Инициализируйте массив ячеек, чтобы содержать данные и противостоять i.

dataarray = cell(numel(fds.Files), 1);
i = 1;

Сбросьте datastore к первому файлу и считайте файлы по одному, пока не будет никаких оставленных данных. Присвойте данные массиву dataarray.

reset(fds);
while hasdata(fds)
    dataarray{i} = read(fds);
    i = i+1;
end

Создайте datastore для файлов в папке MATLAB® demos, которые имеют расширение .mat.

fds = fileDatastore(fullfile(matlabroot,'toolbox','matlab','demos'),'ReadFcn',@load,'FileExtensions','.mat')
fds = 

  FileDatastore with properties:

                       Files: {
                              ' ...\matlab\toolbox\matlab\demos\accidents.mat';
                              ' ...\matlab\toolbox\matlab\demos\airfoil.mat';
                              ' ...\matlab\toolbox\matlab\demos\airlineResults.mat'
                               ... and 37 more
                              }
                 UniformRead: 0
                     ReadFcn: @load
    AlternateFileSystemRoots: {}

Советы

  • Объект FileDatastore разработан, чтобы считать данные из файлов и читает один полный файл за один раз. Чтобы считать подмножество данных от большого файла или читать из потока данных, необходимо создать собственный datastore. Для получения дополнительной информации смотрите, Разрабатывают Пользовательский Datastore.

Альтернативы

Также можно создать объект FileDatastore с помощью функции datastore. Например, ds = datastore(location,'Type','file','ReadFcn',@fcn) создает datastore из набора файлов, заданных location.

Введенный в R2016a

Была ли эта тема полезной?