fileDatastore
数据存储与自定义文件阅读器
描述
使用一个FileDatastore
对象来管理大型文件集的自定义格式的集合并不一定适合在内存中或者在一个大型的自定义格式文件不适合在内存中。您可以创建一个FileDatastore
对象使用fileDatastore
函数,指定它的属性,然后导入使用对象和过程数据的功能。
创建
描述
输入参数
位置
- - - - - -文件或文件夹包含在数据存储中
文件集
对象|文件路径|DsFileSet
对象
文件或文件夹包括在数据存储中,指定为一个文件集
对象,如文件路径,或者作为一个DsFileSet
对象。
文件集
对象,您可以指定位置
作为一个文件集
对象。作为一个指定位置文件集
数据存储对象会导致更快的建设时间相比,或指定一个路径DsFileSet
对象。有关更多信息,请参见matlab.io.datastore.FileSet
。文件路径,您可以指定一个文件路径作为特征向量或字符串标量。您可以指定多个文件路径作为一个单元阵列特征向量或一个字符串数组。
DsFileSet
对象,您可以指定一个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” |
函数必须有这个签名: 功能(数据、用户数据做)= MyReadFcn(文件名,用户数据)…结束
|
“字节” |
函数必须有这个签名: 函数数据= 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” |
使用读模式 基于您的自定义函数,文件中读取数据存储读取只有一部分文件的每一个调用 在 |
“字节” |
使用读模式
基于您的自定义函数,文件中读取数据存储读取 |
使用子集
和洗牌
功能上的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
和数据存储
函数定义文件夹
创建数据存储时。
的文件夹
当你修改属性重置文件
财产的FileDatastore
对象。
数据类型:细胞
ReadFcn
- - - - - -函数,读取文件数据
函数处理
UniformRead
- - - - - -垂直concatenateable国旗
假
(默认)|真正的
这个属性是只读的。
垂直concatenateable国旗,指定为一个逻辑真正的
或假
。首先创建时指定该属性的值FileDatastore
对象。
真正的 |
的多个读取 当
|
假 (默认) |
的多个读取 当
|
例子:fds = fileDatastore(位置、“ReadFcn @load,“UniformRead”,真的)
数据类型:逻辑
|双
金宝appSupportedOutputFormats
- - - - - -写作格式支持的列表金宝app
行向量
对象的功能
hasdata |
确定数据可用来读 |
numpartitions |
数量的数据存储分区 |
分区 |
分区数据存储 |
预览 |
预览数据存储中数据的子集 |
读 |
在数据存储中读取数据 |
readall |
读取所有数据存储中的数据 |
writeall |
写数据存储文件 |
重置 |
数据存储重置为初始状态 |
变换 |
变换数据存储 |
结合 |
合并来自多个数据存储的数据 |
isPartitionable |
确定是否可分区的数据存储 |
isShuffleable |
确定是否shuffleable数据存储 |
洗牌 |
洗牌在数据存储的所有数据 |
子集 |
创建数据存储或文件集的子集 |
例子
创建FileDatastore对象
创建一个fileDatastore对象使用一个文件集对象或文件路径。
创建一个文件集对象。创建一个fileDatastore对象。
fs = matlab.io.datastore.FileSet (“airlinesmall.parquet”);fds = fileDatastore (fs,“ReadFcn”@load)
fds =FileDatastore属性:matlab文件:{“…\ \ matlab工具箱\ \ demo \ airlinesmall。镶花的}文件夹:{”……matlab \ matlab工具箱\ \ demo \ '} UniformRead: 0 ReadMode: '文件' BlockSize: Inf PreviewFcn: @load Su金宝apppportedOutputFormats:[“三种”“csv”“xlsx”“xls”“铺”“parq”“png”“jpg”“jpeg”“tif”“tiff”“wav”“flac”“ogg”“mp4”“m4a格式”]ReadFcn: @load AlternateFileSystemRoots: {}
或者,您可以使用文件路径来创建你的fileDatastore对象。
fds = fileDatastore (“airlinesmall.parquet”,“ReadFcn”,@load);
读数据存储mat文件
创建一个包含所有的数据存储.mat
在MATLAB®文件演示
文件夹中,指定负载
函数来读取文件数据。
fds = fileDatastore (fullfile (matlabroot“工具箱”,“matlab”,“演示”),“ReadFcn”@load,“FileExtensions”,“.mat”)
fds =FileDatastore属性:文件:{“…\ matlab \ matlab工具箱\ \ demo \ accidents.mat”;’……\ matlab \ matlab工具箱\ \ demo \ airfoil.mat”;“……\ matlab \ matlab工具箱\ \ demo \ airlineResults。垫”……文件夹和38}:{…matlab \ matlab工具箱\ \ demo \ '} UniformRead: 0 ReadMode: '文件' BlockSize: Inf PreviewFcn: @load Su金宝apppportedOutputFormats:[“三种”“csv”“xlsx”“xls”“铺”“parq”“png”“jpg”“jpeg”“tif”“tiff”“wav”“flac”“ogg”“mp4”“m4a格式”]ReadFcn: @load AlternateFileSystemRoots: {}
第一个文件读取的数据存储,然后阅读第二个文件。
data1 =阅读(fds);data2 =阅读(fds);
同时读取所有文件的数据存储。
readall (fds);
初始化一个细胞数组来保存数据和计数器我
。
dataarray =细胞(元素个数(fds.Files), 1);i = 1;
重置第一个文件的数据存储和读取文件一次,直到没有数据了。分配数据到数组中dataarray
。
重置(fds);而hasdata (fds) dataarray{我}=阅读(fds);我=我+ 1;结束
从大型MAT-File读取一个数组
您可以创建一个数据存储,读取大型MAT-file不一定适合在内存中。假设每个数组在大型MAT-file适合可用的内存,创建一个数据存储中的数据读取和处理三个步骤:
编写一个定制的阅读功能,从MAT-file读取一个数组。
设置的参数执行部分读取数据存储功能。
从MAT-file读取一个数组。
编写一个自定义函数,读取一个数组从MAT-file时刻。中描述的函数必须有一个签名@ReadFcn
的观点FileDatastore
。保存这个文件在您的工作目录或文件夹,在MATLAB的道路。对于这个示例,一个自定义函数load_variable
包含在这里。
类型load_variable.m
函数(数据、变量做]= load_variable(文件名,变量)%如果变量列表为空,%从文件创建变量列表如果isempty(变量)变量= (- file,文件名);结束%从列表中加载一个变量的变量数据=加载(文件名、变量{1});%从列表中移除newly-read变量变量(1)= [];%继续下一个文件,如果这个文件完成阅读。做= isempty(变量);结束
创建和设置FileDatastore
包含accidents.mat
。指定要使用的数据存储参数“partialfile”
读模式和load_variable
随着定制阅读功能。
fds = fileDatastore (“accidents.mat”,“ReadMode”,“partialfile”,“ReadFcn”,@load_variable);
从文件读取前三个变量使用数据存储。该文件accidents.mat
包含九个变量和每个调用读
返回一个变量。因此,前三个变量,调用read函数三次。
data =阅读(fds)
data =结构体字段:数据源:{3 x1细胞}
data =阅读(fds)
data =结构体字段:hwycols: 17
data =阅读(fds)
data =结构体字段:hwydata (51 x17双):
注意,示例文件accidents.mat
很小,适合在内存中,但是你可以期待类似的结果大mat文件不符合在内存中。
提示
使用
子集
和洗牌
功能上的FileDatastore
对象,必须设置“ReadMode”
来“文件”
。
版本历史
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。金宝app
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。