이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

fileDatastore

사용자 지정 파일 읽기 프로그램을 포함한 데이터저장소

설명

메모리에 맞지 않을 수 있는 대규모 사용자 지정 형식 파일 모음을 관리하기 위해 FileDatastore 객체를 사용합니다. fileDatastore 함수를 사용하여 FileDatastore 객체를 만들고 그 속성을 지정한 다음, 객체 함수를 사용하여 데이터를 가져오고 처리할 수 있습니다.

생성

구문

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

설명

fds = fileDatastore(location,'ReadFcn',@fcn)location으로 지정된 파일 모음에서 데이터저장소를 만들고 함수 fcn을 사용하여 이 파일의 데이터를 읽습니다.

예제

fds = fileDatastore(location,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 fds에 대한 추가 파라미터와 속성을 지정합니다. 예를 들어, fileDatastore(location,'ReadFcn',@customreader,'FileExtensions',{'.exts','.extx'})를 사용하여 확장자에 따라 데이터저장소에 포함할 파일을 지정할 수 있습니다.

입력 인수

모두 확장

데이터저장소에 포함할 파일 또는 폴더로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 스칼라 또는 string형 배열로 지정됩니다. 파일이 현재 폴더에 없는 경우 location은 전체 경로나 상대 경로여야 합니다. 지정된 폴더의 하위 폴더 내에 있는 파일은 데이터저장소에 자동으로 포함되지 않습니다.

location을 지정할 때에는 와일드카드 문자(*)를 사용할 수 있습니다. 이 문자는 일치하는 모든 파일 또는 일치하는 폴더에 있는 모든 파일이 데이터저장소에 포함됨을 나타냅니다.

파일을 로컬에서 사용할 수 없는 경우 파일이나 폴더의 전체 경로는
hdfs:///path_to_file 형식의 IRI(Internationalized Resource Identifier)여야 합니다.

Amazon S3™, Windows Azure® Blob 저장소, HDFS™에서 datastore를 사용하는 데 대한 자세한 내용은 원격 데이터로 작업하기 항목을 참조하십시오.

예: 'file1.ext'

예: '../dir/data/file1.ext'

예: {'C:\dir\data\file1.exts','C:\dir\data\file2.extx'}

예: 'C:\dir\data\*.ext'

데이터형: char | cell | string

파일 데이터를 읽는 함수로, 함수 핸들로 지정됩니다. 최소한의 동작에서 이 함수는 파일 이름을 입력값으로 가지며 그에 상응하는 파일 데이터를 출력합니다. 예를 들어, customreader가 파일을 읽도록 지정된 함수이면 이 함수에는 다음과 비슷한 시그니처가 있어야 합니다.

function data = customreader(filename)
..
end
출력 인수가 둘 이상 있는 경우 데이터저장소에서는 첫 번째 인수만 사용하고 나머지 인수는 무시합니다.

@fcn에 지정된 값은 ReadFcn 속성의 값을 설정합니다.

예: @customreader

데이터형: function_handle

이름-값 쌍의 인수

선택적으로 Name,Value 인수가 쉼표로 구분되어 지정됩니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. Name은 따옴표 안에 표시해야 합니다. Name1,Value1,...,NameN,ValueN과 같이 여러 개의 이름-값 쌍의 인수를 어떤 순서로든 지정할 수 있습니다.

예: fds = fileDatastore('C:\dir\data','FileExtensions',{'.exts','.extx'})

하위 폴더 포함 플래그로, 'IncludeSubfolders'와 함께 true, false, 0, 1 중 하나가 쉼표로 구분되어 지정됩니다. 각 폴더 내에 있는 모든 파일과 하위 폴더를 포함하려면 true를 지정하고, 각 폴더 내에 있는 파일만 포함하려면 false를 지정하십시오.

'IncludeSubfolders'를 지정하지 않은 경우, 디폴트 값은 false입니다.

예: 'IncludeSubfolders',true

데이터형: logical | double

사용자 지정 형식의 파일 확장자로, 'FileExtensions'와 함께 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 스칼라 또는 string형 배열이 쉼표로 구분되어 지정됩니다.

파일 확장자를 지정하면 fileDatastore 함수는 지정된 확장자를 갖는 파일에 대해서만 datastore 객체를 만듭니다. 'FileExtensions'를 빈 문자형 벡터 ''로 지정하여 확장자가 없는 파일에 대한 데이터저장소를 만들 수도 있습니다. 'FileExtensions'를 지정하지 않으면 fileDatastore가 폴더 내 모든 파일을 자동으로 포함합니다.

예: 'FileExtensions',''

예: 'FileExtensions','.ext'

예: 'FileExtensions',{'.exts','.extx'}

데이터형: char | cell | string

파일 시스템 루트 경로의 대체 경로로, 'AlternateFileSystemRoots'와 함께 string형 벡터 또는 셀형 배열이 쉼표로 구분되어 지정됩니다. 로컬 컴퓨터에 데이터저장소를 만들지만 다른 컴퓨터(다른 운영 체제의 컴퓨터일 수 있음)의 데이터에 액세스하고 이를 처리해야 하는 경우 'AlternateFileSystemRoots'를 사용합니다. 또한, Parallel Computing Toolbox™와 MATLAB® Distributed Computing Server™를 사용하여 데이터를 처리하고, 처리한 데이터를 다른 플랫폼 클라우드 또는 다른 클러스터 컴퓨터에 있는 데이터의 복사본과 함께 로컬 컴퓨터에 저장할 경우 'AlternateFileSystemRoots'를 사용하여 루트 경로를 연결해야 합니다.

  • 실질적으로 서로 동일한 루트 경로들의 집합을 연결하려면 'AlternateFileSystemRoots'를 string형 벡터로 지정하십시오. 예를 들면 다음과 같습니다.

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

  • 데이터저장소에 대한 실질적으로 동일한 여러 루트 경로의 집합을 여러 개 연결하려면 'AlternateFileSystemRoots'를 여러 행이 포함된 셀형 배열로 지정하십시오. 여기서 각 행은 실질적으로 동일한 루트 경로들의 집합 하나를 나타냅니다. 셀형 배열의 각 행을 string형 벡터 또는 문자형 벡터로 구성된 셀형 배열로 지정합니다. 예를 들면 다음과 같습니다.

    • 'AlternateFileSystemRoots'를 string형 벡터로 구성된 셀형 배열로 지정합니다.

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

    • 또는 'AlternateFileSystemRoots'를 문자형 벡터로 구성된 셀형 배열로 지정합니다.

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

'AlternateFileSystemRoots'의 값은 다음 조건을 충족해야 합니다.

  • 하나 이상의 행을 포함합니다. 여기서 각 행은 실질적으로 동일한 여러 루트 경로를 지정합니다.

  • 각 행은 여러 개의 루트 경로를 지정하고, 각 루트 경로는 적어도 두 개의 문자를 포함해야 합니다.

  • 루트 경로는 고유하며 서로의 하위 폴더가 아닙니다.

  • 파일의 위치를 가리키는 적어도 하나의 루트 경로 항목을 포함합니다.

자세한 내용은 Set Up Datastore for Processing on Different Machines or Clusters 항목을 참조하십시오.

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

데이터형: string | cell

속성

모두 확장

FileDatastore 속성은 FileDatastore 객체와 연결된 파일을 설명합니다. 객체를 만들 때 이름-값 쌍 인수를 사용하여 Files 속성을 제외한 FileDatastore 속성의 값을 지정할 수 있습니다. 객체를 만든 후 속성을 보거나 수정하려면 점 표기법을 사용하십시오.

데이터저장소에 포함된 파일로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 스칼라 또는 string형 배열로 확인됩니다. 여기서 각 문자형 벡터 또는 string형은 파일에 대한 전체 경로입니다. 데이터저장소를 만들 때 fileDatastore 함수와 datastore 함수에 지정되는 location 인수에 따라 Files가 정의됩니다.

예: {'C:\dir\data\file1.ext';'C:\dir\data\file2.ext'}

예: 'hdfs:///data/*.mat'

데이터형: char | cell | string

파일 데이터를 읽는 함수로, 함수 핸들로 지정됩니다. 이 함수는 파일 이름을 입력값으로 받은 다음 그 파일 데이터를 출력해야 합니다. 예를 들어, customreader가 파일을 읽도록 지정된 함수이면 이 함수에는 다음과 비슷한 시그니처가 있어야 합니다.

function data = customreader(filename)
...
end
출력 인수가 둘 이상 있는 경우 첫 번째 인수만 사용되고 나머지 인수는 무시됩니다.

예: @customreader

데이터형: function_handle

이 속성은 읽기 전용입니다.

세로로 결합 가능한지 여부에 대한 플래그로, 논리형 true 또는 false로 지정됩니다. FileDatastore 객체를 처음 만들 때 이 속성의 값을 지정합니다.

true

FileDatastore 객체를 여러 번 읽는 경우, 세로로 결합 가능한 균일 데이터가 반환됩니다.

UniformRead 속성값이 true일 경우:

  • ReadFcn 함수는 세로로 결합 가능한 데이터를 반환해야 하며, 그러지 않으면 readall 메서드는 오류를 반환합니다.

  • tall 함수의 출력 기본 데이터형은 ReadFcn의 출력 데이터형과 동일합니다.

false(디폴트 값)

FileDatastore 객체를 여러 번 읽는 경우, 세로로 결합 가능한 균일 데이터가 반환되지 않습니다.

UniformRead 속성값이 false일 경우:

  • readall은 셀형 배열을 반환합니다.

  • tall은 tall형 셀형 배열을 반환합니다.

예: fds = fileDatastore(location,'ReadFcn',@load,'UniformRead',true)

데이터형: logical | double

객체 함수

hasdata데이터를 읽을 수 있는지 확인
numpartitions데이터저장소 파티션 개수
partition데이터저장소 파티셔닝
preview데이터저장소에 있는 데이터의 서브셋
read데이터저장소의 데이터 읽어 들이기
readall데이터저장소의 모든 데이터 읽기
reset데이터저장소를 초기 상태로 재설정

예제

모두 축소

MATLAB® demos 폴더 내 모든 .mat 파일을 포함하는 데이터저장소를 만들어, 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: {}

데이터저장소의 첫 번째 파일을 읽은 후 두 번째 파일을 읽습니다.

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

데이터저장소의 모든 파일을 동시에 읽습니다.

readall(fds);

데이터와 카운터 i를 유지할 셀형 배열을 초기화합니다.

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

데이터저장소를 첫 번째 파일로 재설정하고 남아 있는 데이터가 없을 때까지 한 번에 하나씩 파일을 읽습니다. 배열 dataarray에 데이터를 할당합니다.

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

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 객체는 여러 파일에서 데이터를 읽도록 설계되었으며, 한 번에 한 파일 전체를 읽습니다. 매우 큰 파일에서 파일의 서브셋을 읽거나 데이터 스트림에서 읽으려면 자신의 사용자 지정 데이터저장소를 생성해야 합니다. 자세한 내용은 Develop Custom Datastore 항목을 참조하십시오.

대안

datastore 함수를 사용하여 FileDatastore 객체를 만들 수도 있습니다. 예를 들어, ds = datastore(location,'Type','file','ReadFcn',@fcn)location으로 지정된 파일 모음에서 데이터저장소를 만듭니다.

R2016a에 개발됨