fileDatastore
사용자 지정 파일 리더를 사용하는 데이터저장소
설명
메모리에 맞지 않을 수 있는 대규모 사용자 지정 형식 파일 모음을 관리해야 하거나 대용량 사용자 지정 형식 파일이 메모리에 맞지 않을 때 FileDatastore 객체를 사용합니다. fileDatastore 함수를 사용하여 FileDatastore 객체를 만들고 그 속성을 지정한 다음, 객체 함수를 사용하여 데이터를 가져오고 처리할 수 있습니다.
생성
구문
설명
은 하나 이상의 이름-값 쌍의 인수를 사용하여 fds = fileDatastore(location,"ReadFcn",@fcn,Name,Value)fds에 대한 추가 파라미터와 속성을 지정합니다. 예를 들어, fileDatastore(location,"ReadFcn",@customreader,"FileExtensions",[".exts",".extx"])를 사용하여 확장자에 따라 데이터저장소에 포함할 파일을 지정할 수 있습니다.
입력 인수
데이터저장소에 포함할 파일 또는 폴더로, 다음 값 중 하나로 지정됩니다.
FileSet객체 — 위치를FileSet객체로 지정하면 경로나DsFileSet객체로 지정하는 경우보다 데이터저장소 생성 시간이 빨라집니다. 자세한 내용은matlab.io.datastore.FileSet항목을 참조하십시오.DsFileSet객체 — 자세한 내용은matlab.io.datastore.DsFileSet항목을 참조하십시오.파일 경로 — string형 스칼라나 문자형 벡터로 하나의 파일 경로를 지정할 수 있습니다. 여러 개의 파일 경로는 string형 배열 또는 문자형 벡터로 구성된 셀형 배열로 지정하면 됩니다.
파일이나 폴더는 로컬 또는 원격이 될 수 있습니다.
로컬 파일 또는 폴더 — 파일이 현재 폴더에 없는 경우 전체 경로나 상대 경로를 지정합니다. 지정된 폴더의 하위 폴더 내에 있는 파일은 데이터저장소에 자동으로 포함되지 않습니다. 로컬 경로를 지정할 때에는 와일드카드 문자(*)를 사용할 수 있습니다. 이 문자는 모든 일치하는 파일 또는 일치하는 폴더의 모든 파일을 데이터저장소에 포함하도록 지정합니다.
원격 파일 또는 폴더 —
hdfs:///형식의 URL(Uniform Resource Locator)을 사용하여 원격 파일 또는 폴더의 전체 경로로 지정합니다. 인터넷 URL에는 프로토콜 유형path_to_file"http://"또는"https://"가 포함되어야 합니다. 와일드카드 문자를 URL의 어느 부분에든 사용하여 여러 원격 파일을 지정할 수 있습니다 (R2025a 이후). 자세한 내용은 원격 데이터로 작업하기 항목을 참조하십시오.
폴더를 지정하면 데이터저장소는 지원되는 파일 형식의 파일만 포함하며 그 외 다른 형식의 파일은 무시합니다. 데이터저장소에 포함할 파일 확장자 목록을 사용자 지정하려면 FileExtensions 이름-값 인수를 참조하십시오.
예: "file1.ext"
예: "../dir/data/file1.ext"
예: ["C:\dir\data\file1.exts","C:\dir\data\file2.extx"]
예: "C:\dir\data\*.ext"
파일 데이터를 읽는 함수로, 함수 핸들로 지정됩니다.
함수 핸들 @fcn으로 표현되는 함수의 시그니처는 지정된 ReadMode의 값에 따라 달라집니다. 파일 데이터를 읽는 함수는 다음 시그니처 중 하나에 해당해야 합니다.
|
|
|---|---|
"file"(디폴트 값) | 이 함수는 다음과 같은 시그니처를 가져야 합니다. function data = MyReadFcn(filename) ... end
|
"partialfile" | 이 함수는 다음과 같은 시그니처를 가져야 합니다. function [data,userdata,done] = MyReadFcn(filename,userdata) ... end
|
"byte" | 이 함수는 다음과 같은 시그니처를 가져야 합니다. function data = MyReadFcn(filename,offset,size) ... end
|
@fcn에 지정된 값은 ReadFcn 속성의 값을 설정합니다.
예: @customreader
데이터형: function_handle
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: fds = fileDatastore("C:\dir\data",FileExtensions=[".exts",".extx"])
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.
예: 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
입력 데이터를 미리보기하는 함수로, 함수 핸들로 지정됩니다.
미리보기 함수를 지정하지 않을 경우 FileDatastore는 @ReadFcn에 지정된 값을 디폴트 미리보기 함수로 사용합니다. 또는 데이터에 적용할 사용자 지정 미리보기 함수를 지정할 수도 있습니다.
@ReadFcn(디폴트 값) —ReadFcn을 사용하여FileDatastore데이터를 샘플링합니다. 이 옵션을 사용하면tall생성이 느려질 수 있습니다.Function handle—FileDatastore및tall생성에 사용자 지정 미리보기 함수를 사용하여 입력 데이터를 샘플링합니다. 미리보기와 tall 생성을 위해 입력 데이터에서 필요한 최소한의 부분만을 읽는 함수를 제공하려면PreviewFcn을 사용합니다.
PreviewFcn에 의해 지정된 함수는 ReadFcn이 반환하는 값의 데이터형과 동일한 데이터형으로 값을 반환해야 합니다.
데이터형: function_handle
파일에서 읽을 부분으로, "file", "partialfile" 또는 "bytes"로 지정됩니다.
"file"(디폴트 값) |
파일 데이터저장소는 사용자 지정된 읽기 함수에 따라 |
"partialfile" |
파일 데이터저장소는 사용자 지정된 읽기 함수에 따라
|
"bytes" |
파일 데이터저장소는 사용자 지정된 읽기 함수에 따라 읽기 함수가 호출될 때마다 |
FileDatastore 객체에 subset 및 shuffle 함수를 사용하려면 "ReadMode"를 "file"로 설정해야 합니다.
데이터형: char | string
매 read 작업 시 읽을 바이트 수로, 양의 정수로 지정됩니다.
한 파일의 여러 블록을 복수의 병렬 MATLAB® 워커에 분산하려면 BlockSize를 131072바이트(128킬로바이트)보다 큰 양의 정수로 지정하십시오.
BlockSize의 값을 지정하거나 변경하려면 먼저 ReadMode를 "bytes"로 설정해야 합니다. FileDatastore는 ReadMode에 지정된 값에 따라 BlockSize의 디폴트 값을 설정합니다.
ReadMode가"file"또는"partialfile"이면FileDatastore는BlockSize의 디폴트 값을inf로 설정합니다.ReadMode가"bytes"이면FileDatastore는BlockSize의 디폴트 값을128메가바이트로 설정합니다.
파일 시스템 루트 경로의 대체 경로로, "AlternateFileSystemRoots"와 함께 string형 벡터 또는 셀형 배열로 구성된 이름-값 인수로 지정됩니다. 로컬 컴퓨터에 데이터저장소를 만들지만 다른 컴퓨터(다른 운영 체제의 컴퓨터일 수 있음)의 데이터에 액세스하고 이를 처리해야 하는 경우 "AlternateFileSystemRoots"를 사용합니다. 또한 Parallel Computing Toolbox™와 MATLAB Parallel 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
읽기 전용 속성입니다.
데이터저장소를 생성하는 데 사용된 폴더로, 문자형 벡터로 구성된 셀형 배열로 반환됩니다. 셀형 배열은 열 벡터로 방향이 설정됩니다. 각 문자형 벡터는 데이터 파일을 포함하는 폴더의 경로입니다. 데이터저장소를 만들 때 fileDatastore 함수와 datastore 함수에 지정되는 location 인수에 따라 Folders가 정의됩니다.
FileDatastore 객체의 Files 속성을 수정하면 Folders 속성이 재설정됩니다.
데이터형: cell
데이터형: function_handle
읽기 전용 속성입니다.
세로로 결합 가능한지 여부에 대한 플래그로, 논리형 true 또는 false로 지정됩니다. FileDatastore 객체를 처음 만들 때 이 속성의 값을 지정합니다.
true |
|
false(디폴트 값) |
|
예: fds = fileDatastore(location,"ReadFcn",@load,"UniformRead",true)
데이터형: logical | double
읽기 전용 속성입니다.
쓰기가 지원되는 형식으로, string형으로 구성된 행 벡터로 반환됩니다. 이 속성은 writeall을 사용하여 데이터저장소에서 출력 파일을 쓸 때 가능한 출력 형식을 지정합니다.
객체 함수
hasdata | 데이터를 읽을 수 있는지 확인 |
numpartitions | 데이터저장소 파티션 개수 |
partition | 데이터저장소 파티셔닝 |
preview | 데이터저장소에 있는 데이터의 서브셋 미리보기 |
read | 데이터저장소의 데이터 읽어 들이기 |
readall | 데이터저장소의 모든 데이터 읽기 |
writeall | Write datastore to files |
reset | 데이터저장소를 초기 상태로 재설정 |
transform | 데이터저장소 변환 |
combine | 여러 데이터저장소의 데이터 결합 |
isPartitionable | Determine whether datastore is partitionable |
isSubsettable | Determine whether datastore is subsettable |
isShuffleable | Determine whether datastore is shuffleable |
shuffle | 데이터저장소의 모든 데이터 읽기 섞기 |
subset | Create subset of datastore or FileSet |
예제
FileSet 객체 또는 파일 경로를 사용하여 fileDatastore 객체를 만듭니다.
FileSet 객체를 만듭니다. fileDatastore 객체를 만듭니다.
fs = matlab.io.datastore.FileSet("fluidtemp.mat"); fds = fileDatastore(fs,"ReadFcn",@load)
fds =
FileDatastore with properties:
Files: {
' ...\matlab\toolbox\matlab\demos\fluidtemp.mat'
}
Folders: {
'...\matlab\toolbox\matlab\demos'
}
UniformRead: 0
ReadMode: 'file'
BlockSize: Inf
PreviewFcn: @load
SupportedOutputFormats: ["txt" "csv" "dat" "asc" "xlsx" "xls" "parquet" "parq" "png" … ] (1×20 string)
ReadFcn: @load
AlternateFileSystemRoots: {}
또는 파일 경로를 사용하여 fileDatastore 객체를 만들 수도 있습니다.
fds = fileDatastore("fluidtemp.mat","ReadFcn",@load);
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 38 more
}
Folders: {
'...\matlab\toolbox\matlab\demos'
}
UniformRead: 0
ReadMode: 'file'
BlockSize: Inf
PreviewFcn: @load
SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq" "png" "jpg" "jpeg" "tif" "tiff" "wav" "flac" "ogg" "mp4" "m4a"]
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
메모리에 맞지 않을 수 있는 대용량 MAT 파일에서 읽기 위해 데이터저장소를 만들 수 있습니다. 대용량 MAT 파일의 각 배열이 사용 가능한 메모리에 맞는다고 가정하고, 다음과 같은 3단계를 통해 데이터를 읽고 처리하기 위해 데이터저장소를 만듭니다.
MAT 파일에서 배열을 한 번에 하나씩 읽는 사용자 지정 읽기 함수를 작성합니다.
부분 읽기를 수행하도록 데이터저장소 함수의 파라미터를 설정합니다.
MAT 파일에서 배열을 한 번에 하나씩 읽습니다.
MAT 파일에서 배열을 한 번에 하나씩 읽는 사용자 지정 함수를 작성합니다. 이 함수는 FileDatastore의 @ReadFcn 인수에 설명되어 있는 것처럼 시그니처를 가져야 합니다. 이 파일을 작업 폴더나 MATLAB 경로에 있는 폴더에 저장합니다. 이 예제에서는 다음과 같은 사용자 지정 함수 load_variable을 사용합니다.
type load_variable.mfunction [data,variables,done] = load_variable(filename,variables)
% If variable list is empty,
% create list of variables from the file
if isempty(variables)
variables = who('-file', filename);
end
% Load a variable from the list of variables
data = load(filename, variables{1});
% Remove the newly-read variable from the list
variables(1) = [];
% Move on to the next file if this file is done reading.
done = isempty(variables);
end
accidents.mat를 포함하는 FileDatastore를 생성하고 설정합니다. "partialfile"을 읽기 모드로 사용하고 load_variable을 사용자 지정 읽기 함수로 사용하도록 데이터저장소 파라미터를 지정합니다.
fds = fileDatastore("accidents.mat","ReadMode","partialfile","ReadFcn",@load_variable);
데이터저장소를 사용하여 파일에서 처음 3개의 변수를 읽어 들입니다. 파일 accidents.mat 는 9개의 변수를 포함하고 있으며 read가 한 번 호출될 때마다 한 개의 변수가 반환됩니다. 따라서 처음 3개의 변수를 가져오려면 읽기 함수를 세 번 호출합니다.
data = read(fds)
data = struct with fields:
datasources: {3×1 cell}
data = read(fds)
data = struct with fields:
hwycols: 17
data = read(fds)
data = struct with fields:
hwydata: [51×17 double]
샘플 파일 accidents.mat는 작고 메모리에 맞지만, 메모리에 맞지 않는 대용량 MAT 파일에 대해서도 비슷한 결과를 예상할 수 있습니다.
제한 사항
MATLAB은 인증을 요하는 인터넷 URL을 지원하지 않습니다.
MATLAB Online™은 Microsoft® OneDrive™ 파일 및 폴더와 연결된 인터넷 URL을 지원합니다. 반면 설치된 MATLAB에서는 로컬 OneDrive 파일만 지원합니다.
팁
FileDatastore객체에subset및shuffle함수를 사용하려면"ReadMode"를"file"로 설정해야 합니다.
버전 내역
R2016a에 개발됨여러 개의 원격 파일에서 데이터저장소를 만들 수 있습니다. 와일드카드 문자를 URL의 어느 부분에든 사용하여 여러 원격 파일을 지정할 수 있습니다.
인터넷 URL을 통해 데이터저장소 작업을 수행하여 주요 온라인 소스에서 데이터를 읽을 수 있습니다.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)