fileDatastore
带有自定义文件阅读器的数据存储
描述
使用一个FileDatastore
对象来管理自定义格式文件的大型集合,其中集合不一定适合内存,或者大型自定义格式文件不适合内存。你可以创建一个FileDatastore
对象。fileDatastore
函数,指定其属性,然后使用对象函数导入和处理数据。
创建
描述
输入参数
位置
- - - - - -要包含在数据存储中的文件或文件夹
文件集
对象|文件路径|DsFileSet
对象
包含在数据存储中的文件或文件夹,指定为文件集
对象,作为文件路径,或作为DsFileSet
对象。
文件集
object -你可以指定位置
作为一个文件集
对象。指定位置为文件集
对象可以缩短数据存储的构建时间,而不是指定路径或DsFileSet
对象。有关更多信息,请参见matlab.io.datastore.FileSet
。文件路径-您可以将单个文件路径指定为字符矢量或字符串标量。您可以将多个文件路径指定为字符向量的单元格数组或字符串数组。
DsFileSet
object -你可以指定一个DsFileSet
对象。有关更多信息,请参见matlab.io.datastore.DsFileSet
。
文件或文件夹可以是本地的或远程的:
本地文件或文件夹—指定文件或文件夹的本地路径。如果文件不在当前文件夹中,则指定完整路径或相对路径。指定文件夹的子文件夹中的文件不会自动包含在数据存储中。指定本地路径时,可以使用通配符“*”。此字符指定数据存储包括所有匹配文件或匹配文件夹中的所有文件。
远程文件或文件夹——将远程文件或文件夹的完整路径指定为表单的统一资源定位符(URL)
hdfs: / / /
。有关更多信息,请参见处理远程数据。path_to_file
指定文件夹时,数据存储只包含支持文件格式的文件,而忽略其他格式的文件。金宝app若要指定要包含在数据存储中的文件扩展名的自定义列表,请参见FileExtensions
财产。
例子:“file1.ext”
例子:“. . / dir /数据/ file1.ext”
例子:{“C: \ dir \ data \ file1.exts”,“C: \ dir \ data \ file2.extx”}
例子:“C: \ dir \ data \ * . ext "
@fcn
- - - - - -读取文件数据的函数
函数处理
读取文件数据的函数,指定为函数句柄。
由函数句柄表示的函数的签名@fcn
取决于指定的值ReadMode
。读取文件数据的函数必须确认这些签名中的一个。
|
|
---|---|
“文件” (默认) |
函数必须有这样的签名: 函数数据= MyReadFcn(文件名)…结束
|
“partialfile” |
函数必须有这样的签名: function [data,userdata,done] = MyReadFcn(filename,userdata)…结束
|
“字节” |
函数必须有这样的签名: 函数数据= MyReadFcn(文件名,偏移量,大小)…结束
的 |
中指定的值@fcn
的值ReadFcn财产。
例子:@customreader
数据类型:function_handle
指定可选的参数对为Name1 = Value1,…,以=家
,在那里名字
是参数名和吗价值
是对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来名字
在报价。
例子:fds = fileDatastore(“C: \ dir \数据”,“FileExtensions”{“开头”、“.extx”})
IncludeSubfolders
- - - - - -子文件夹包含标志
真正的
或假
|0或1
子文件夹包含标志,指定为由“IncludeSubfolders”
和真正的
,假
、0或1。指定真正的
包含每个文件夹或文件夹中的所有文件和子文件夹假
只包含每个文件夹中的文件。
如果不指定“IncludeSubfolders”
,则默认值为假
。
例子:“IncludeSubfolders”,真的
数据类型:逻辑
|双
FileExtensions
- - - - - -自定义格式文件扩展名
特征向量|字符向量的单元数组|字符串标量|字符串数组
自定义格式文件扩展名,指定为由逗号分隔的对“FileExtensions”
以及字符向量、字符向量的单元数组、字符串标量或字符串数组。
指定文件扩展名时fileDatastore
函数仅为具有指定扩展名的文件创建数据存储对象。您还可以通过指定,为没有任何扩展名的文件创建数据存储“FileExtensions”
作为一个空字符向量,”
。如果不指定“FileExtensions”
,然后fileDatastore
自动包含文件夹内的所有文件。
例子:“FileExtensions”、“
例子:“FileExtensions”、“开头”
例子:“FileExtensions”(“开头”、“.extx”)
数据类型:字符
|细胞
|字符串
PreviewFcn
- - - - - -预览输入数据的功能
@ReadFcn
(默认)|函数处理
函数预览输入数据,指定为函数句柄。
如果未指定预览功能,则FileDatastore
中指定的值@ReadFcn
默认为预览功能。或者,您可以为您的数据指定自己的自定义预览函数。
@ReadFcn
(默认)-使用ReadFcn
样本FileDatastore
数据。此选项可能导致性能降低高
建设。函数处理
-使用您的自定义预览功能FileDatastore
和高
构造对输入数据进行采样。使用PreviewFcn
提供一个函数,该函数只读取输入数据的最少部分,用于预览和构造。
指定的函数PreviewFcn
必须返回与ReadFcn
的回报。
数据类型:function_handle
ReadMode
- - - - - -要读取的文件部分
“文件”
(默认)|“partialfile”
|“字节”
要读取的文件的一部分,指定为“文件”
,“partialfile”
,或“字节”
。
“文件” (默认) |
使用读模式 根据您的自定义读取函数,文件数据存储在每次调用时读取完整的文件 |
“partialfile” |
使用读模式 方法调用时,文件数据存储仅读取文件的一部分 在 |
“字节” |
使用读模式
根据您的自定义读取函数,文件数据存储读取 |
要使用子集
和洗牌
a上的函数FileDatastore
对象,您必须设置“ReadMode”
来“文件”
。
数据类型:字符
|字符串
BlockSize
- - - - - -要读取的字节数
正整数
要读取的字节数读
操作,指定为正整数。
以确保您可以分布多个块的文件跨多个并行MATLAB®工人,指定BlockSize
作为大于的正整数131072
个字节(128
千字节)。
指定或改变的值BlockSize
,你必须先设定ReadMode
来“字节”
。FileDatastore
的默认值BlockSize
中指定的值ReadMode
。
如果
ReadMode
是“文件”
或“partialfile”
,然后FileDatastore
设置默认值BlockSize
来正
。如果
ReadMode
是“字节”
,然后FileDatastore
设置默认值BlockSize
来128
兆字节。
AlternateFileSystemRoots
- - - - - -备用文件系统根路径
字符串向量|单元阵列
备用文件系统根路径,指定为名称-值参数,由“AlternateFileSystemRoots”
字符串向量或单元格数组。使用“AlternateFileSystemRoots”
在本地机器上创建数据存储,但需要在另一台机器(可能使用不同的操作系统)上访问和处理数据。此外,在使用并行计算工具箱™和MATLAB并行服务器™,并且数据存储在本地机器上,在不同的平台云或集群机器上提供数据的副本,您必须使用“AlternateFileSystemRoots”
关联根路径。
要关联一组彼此等价的根路径,请指定
“AlternateFileSystemRoots”
作为一个字符串向量。例如,[" Z: \数据集”、“/ mynetwork /数据集”)
若要关联数据存储的多组等效根路径,请指定
“AlternateFileSystemRoots”
作为包含多行的单元格数组,其中每行表示一组等效根路径。将单元格数组中的每行指定为字符串向量或字符向量的单元格数组。例如:指定
“AlternateFileSystemRoots”
作为字符串向量的单元格数组。{[Z: \“数据集”、“/ mynetwork /数据集”);…[" Y: \数据集”、“/ mynetwork2 /数据集”、“年代:\数据集”)}
另外,指定
“AlternateFileSystemRoots”
作为单元数组的单元数组的字符向量。{{“Z: \数据集”、“mynetwork /数据集”},…{“Y: \数据集”,“mynetwork2 /数据集”,年代:\数据集的}}
的价值“AlternateFileSystemRoots”
必须满足以下条件:
包含一行或多行,其中每行指定一组等效根路径。
每行指定多个根路径,每个根路径必须至少包含两个字符。
根路径是唯一的,并且不是彼此的子文件夹。
包含至少一个指向文件位置的根路径条目。
有关更多信息,请参见设置数据存储以便在不同的机器或集群上进行处理。
例子:[" Z: \数据集”、“/ mynetwork /数据集”)
数据类型:字符串
|细胞
属性
FileDatastore
属性描述与。关联的文件FileDatastore
对象。除了文件
属性时,可以指定的值FileDatastore
使用名称-值对参数的属性。要在创建对象后查看或修改属性,请使用点表示法。
文件
- - - - - -数据存储中包含的文件
特征向量|字符向量的单元数组|字符串标量|字符串数组
包含在数据存储中的文件,解析为字符向量、字符向量的单元数组、字符串标量或字符串数组,其中每个字符向量或字符串是文件的完整路径。的位置
的论点fileDatastore
和数据存储
函数定义文件
创建数据存储时。
例子:{“C: \ dir \ data \ file1.ext”;“C: \ dir \ data \ file2.ext”}
例子:“hdfs: / / /数据/ * .mat”
数据类型:字符
|细胞
|字符串
文件夹
- - - - - -用于构造数据存储的文件夹
字符向量的单元数组
该属性是只读的。
用于构造数据存储的文件夹,作为字符向量的单元数组返回。单元格数组定向为列向量。每个字符向量是指向包含数据文件的文件夹的路径。的位置
的论点fileDatastore
和数据存储
函数定义文件夹
创建数据存储时。
的文件夹
属性时重置文件
a的性质FileDatastore
对象。
数据类型:细胞
ReadFcn
- - - - - -读取文件数据的函数
函数处理
UniformRead
- - - - - -可垂直连接的标志
假
(默认)|真正的
该属性是只读的。
可垂直连接的标志,指定为逻辑真正的
或假
。类时指定此属性的值FileDatastore
对象。
真正的 |
的多次读取 当
|
假 (默认) |
的多次读取 当
|
例子:fds = fileDatastore(location,"ReadFcn",@load,"UniformRead",true)
数据类型:逻辑
|双
金宝appSupportedOutputFormats
- - - - - -支持的写入格式金宝app
字符串行向量
该属性是只读的。
支持写入的格式,金宝app作为字符串的行向量返回。此属性指定使用时可能的输出格式writeall
从数据存储写入输出文件。
对象的功能
hasdata |
确定是否有数据可供读取 |
numpartitions |
数据存储分区数 |
分区 |
对数据存储分区 |
预览 |
预览数据存储中的数据子集 |
读 |
读取数据存储中的数据 |
readall |
读取数据存储中的所有数据 |
writeall |
将数据存储写入文件 |
重置 |
将数据存储重置为初始状态 |
变换 |
变换数据存储 |
结合 |
合并来自多个数据存储的数据 |
isPartitionable |
确定数据存储是否可分区 |
isSubsettable |
确定数据存储是否可子集 |
isShuffleable |
确定数据存储是否可洗牌 |
洗牌 |
Shuffle数据存储中的所有数据 |
子集 |
创建数据存储或文件集的子集 |
例子
创建文件数据存储对象
使用FileSet对象或文件路径创建fileDatastore对象。
创建一个文件集对象。创建文件数据存储对象。
fs = matlab.io.datastore.FileSet(“airlinesmall.parquet”);fds = fileDatastore(fs,“ReadFcn”@load)
fds =带属性的FileDatastore:文件:{'…\matlab\toolbox\matlab\demos\ airlinsmall。parquet'}文件夹:{'…\matlab\toolbox\matlab\demos'} UniformRead: 0 ReadMode: 'file' BlockSize: Inf PreviewFcn: @load S金宝appupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq" "png" "jpg" "jpeg" "tif" "tiff" "wav" "flac" "ogg" "mp4" "m4a"] ReadFcn: @load AlternateFileSystemRoots: {}
或者,您可以使用文件路径来创建您的fileDatastore对象。
fds = fileDatastore(“airlinesmall.parquet”,“ReadFcn”, @load);
读取MAT-Files的数据存储
创建包含所有元素的数据存储.mat
文件中的MATLAB®演示
文件夹,指定负载
函数读取文件数据。
fds = fileDatastore(fullfile(matlabroot),“工具箱”,“matlab”,“演示”),“ReadFcn”@load,“FileExtensions”,“.mat”)
fds =带属性的FileDatastore:文件:{'…\matlab\toolbox\matlab\demos\accidents.mat';’……\ matlab \ matlab工具箱\ \ demo \ airfoil.mat”;“……\ matlab \ matlab工具箱\ \ demo \ airlineResults。垫”……和38个}文件夹:{'…\matlab\toolbox\matlab\demos'} UniformRead: 0 ReadMode: 'file' BlockSize: Inf PreviewFcn: @load S金宝appupportedOutputFormats: ["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);
初始化一个单元格数组来保存数据和计数器我
。
datarray = cell(numel(fds.Files), 1);I = 1;
将数据存储重置为第一个文件,并一次读取一个文件,直到没有数据剩余。将数据分配给数组dataarray
。
重置(fds);而Hasdata (fds) dataarray{i} = read(fds);I = I +1;结束
每次从大型mat文件中读取一个数组
您可以创建一个数据存储,以便从不一定适合内存的大型mat文件中读取数据。假设大型mat文件中的每个数组都适合可用内存,创建一个数据存储来分三步读取和处理数据:
编写一个自定义读取函数,每次从mat文件中读取一个数组。
设置数据存储函数的参数以执行部分读取。
每次从mat文件中读取一个数组。
编写一个自定义函数,每次从MAT-file中读取一个数组。中描述的函数必须具有签名@ReadFcn
的观点FileDatastore
。将此文件保存在您的工作文件夹或MATLAB路径上的文件夹中。对于本例,是一个自定义函数load_variable
包含在这里。
类型load_variable.m
函数[data,variables,done] = load_variable(filename,variables) %如果变量列表为空,%从文件中创建变量列表如果变量列表为空(变量)变量= who('-file', filename);data = Load (filename, variables{1});%从变量列表中删除新读取的变量(1)= [];如果该文件已完成读取,则转到下一个文件。Done = isempty(变量);结束
创建和设置FileDatastore
包含accidents.mat
。指定要使用的数据存储参数“partialfile”
为读模式和load_variable
作为自定义读取功能。
fds = fileDatastore(“accidents.mat”,“ReadMode”,“partialfile”,“ReadFcn”, @load_variable);
使用数据存储从文件中读取前三个变量。该文件accidents.mat
包含9个变量,每次调用读
返回一个变量。因此,要获取前三个变量,需要三次调用read函数。
Data = read(fds)
data =带有字段的结构体:数据源:{3x1 cell}
Data = read(fds)
data =带有字段的结构体:hwycols: 17
Data = read(fds)
data =带有字段的结构体:Hwydata: [51x17 double]
注意,样例文件accidents.mat
很小,适合内存,但是对于不适合内存的大型mat文件,您可以期望得到类似的结果。
提示
要使用
子集
和洗牌
a上的函数FileDatastore
对象,您必须设置“ReadMode”
来“文件”
。
版本历史
在R2016a中引入
第一MATLAB
在MATLAB中编写了一种常用的求解方法:
Esegui将在MATLAB中执行编译。I浏览器网页不支持命令MATLAB。金宝app
你亦可选择下列网址:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家网站没有针对您所在位置的访问进行优化。