主要内容

分区

类:matlab.io.datastore.Partitionable
包:matlab.io.datastore

分区数据存储

描述

例子

再分=分区(dsn指数分区数据存储ds成零件的数量n并返回对应于索引的分区指数.分区数据存储再分是否与输入数据存储相同类型ds

输入参数

全部展开

输入数据存储,指定为matlab.io.Datastore对象。创建一个数据存储对象,看到matlab.io.Datastore

分区数,指定为正整数。的合理值n,可以使用numpartitions函数。

当指定值为时n不在数据存储可用分区范围内的分区方法返回一个空的数据存储。有关更多信息,请参见空数据存储.例如,如果一个数据存储能够承受10分区,然后输出分区方法取决于的值n

  • 的指定值n是小于还是等于10,那么分区方法返回指定的分区指数.例如,分区(ds 10 1)返回原始数据存储的第一个分区的副本ds

  • 的指定值n大于10,那么分区方法返回一个空的数据存储。例如,分区(ds、100、11)返回一个空的数据存储。

例子:3.

数据类型:

索引,指定为正整数。

例子:1

数据类型:

属性

摘要 真正的

要了解方法的属性,请参见方法属性

例子

全部展开

构建一个具有并行处理支持的数据存储,并使用它将您的自定义或专有数据带入MATLAB®。万博1manbetx然后,在一个并行池中处理数据。

创建一个.m类定义文件,该文件包含实现自定义数据存储的代码。您必须将此文件保存在您的工作文件夹或MATLAB®路径上的文件夹中。公司的名称.m文件必须与对象构造函数的名称相同。例如,如果您希望构造函数的名称为MyDatastorePar,那么.m文件必须MyDatastorePar.m.的.m类定义文件必须包含以下步骤:

  • 步骤1:从数据存储类继承。

  • 步骤2:定义构造函数和所需的方法。

  • 步骤3:定义自定义的文件读取功能。

除了这些步骤之外,还定义处理和分析数据所需的任何其他属性或方法。

步骤1:从数据存储类继承classdefMyDatastorePar < matlab.io.Datastore &...matlab.io.datastore.Partitionable属性(Access = private) CurrentFileIndex文件集matlab.io.datastore.DsFileSet结束属性支持保存、加载和处理万博1manbetx%数据存储在不同的文件系统机器或集群上。另外,定义get.AlternateFileSystemRoots()方法%和set.AlternateFileSystemRoots()在方法部分。属性(依赖)AlternateFileSystemRoots结束步骤2:定义构造函数和所需的方法方法定义数据存储构造函数函数myds = MyDatastorePar(location,altRoots)文件集= matlab.io.datastore.DsFileSet(location,...“FileExtensions”“。斌”...“FileSplitSize”8 * 1024);myds。CurrentFileIndex = 1;如果Nargin == 2 myds。AlternateFileSystemRoots = altRoots;结束重置(myds);结束定义hasdata方法函数tf = hasdata (myds)%如果有更多可用数据则返回truetf = hasfile (myds.FileSet);结束%定义读取方法函数(数据、信息)=阅读(myds)读取数据和提取数据的相关信息%参见:MyFileReader()如果~hasdata(myds) msgII = ['使用reset方法重置数据存储'...从数据开始];msgIII = [在调用read方法之前...'检查数据是否可用来读取'...'通过使用hasdata方法。'];错误('没有更多数据要读取。\n%s\n%s'、msgII msgIII);结束fileInfoTbl = nextfile (myds.FileSet);data = MyFileReader (fileInfoTbl);信息。大小=大小(数据);信息。文件名= fileInfoTbl.FileName;信息。抵消= fileInfoTbl.Offset;%更新CurrentFileIndex以跟踪进度如果fileInfoTbl。抵消+ fileInfoTbl。SplitSize > =...fileInfoTbl。文件大小myds。CurrentFileIndex = myds。CurrentFileIndex + 1;结束结束定义重置方法函数重置(myds)%重置到数据的开始重置(myds.FileSet);myds。CurrentFileIndex = 1;结束%定义分区方法函数Subds = partition(myds,n,ii); / /分区再分。文件集=分区(myds.FileSet n ii);重置(再分);结束% AlternateFileSystemRoots属性的Getter函数altRoots = get. fileset . alternatefilesystemroots (myds);结束% Setter for AlternateFileSystemRoots属性函数set.AlternateFileSystemRoots (myds altRoots)试一试% DsFileSet对象管理AlternateFileSystemRoots%用于您的数据存储myds.FileSet.AlternateFileSystemRoots = altRoots;%重置数据存储重置(myds);我把(我);结束结束结束方法(隐藏= true)定义进度方法函数压裂=进步(myds)%确定从数据存储读取数据的百分比如果hasdata(myds) frac = (myds. currentfileindex -1)/...myds.FileSet.NumFiles;其他的压裂= 1;结束结束结束方法(访问=保护)%如果您在数据存储中使用FileSet属性,%则必须定义copelement方法。的% copelement方法允许像readall这样的方法%和预览保持无状态函数dscopy = copelement (ds);dscopy。文件集= (ds.FileSet)复印件;结束定义maxpartitions方法函数n = maxpartitions(myds. fileset);结束结束结束步骤3:实现您的自定义文件读取功能函数data = MyFileReader (fileInfoTbl)%使用FileName创建一个读取器对象读者= matlab.io.datastore.DsFileReader (fileInfoTbl.FileName);寻找偏移量寻求(读者,fileInfoTbl。抵消,“起源”“start-of-file”);% fileInfoTbl阅读。SplitSize数据量data =阅读(读者,fileInfoTbl.SplitSize);结束

您的自定义数据存储现在已经准备好了。使用自定义数据存储在并行池中读取和处理数据。

更多关于

全部展开

提示

  • 在你的实现分区方法,则必须包括以下步骤。

    • 创建分区数据存储之前再分,创建原始数据存储的深度副本ds

    • 最后分区方法,重置分区的数据存储再分

    的示例实现分区方法,请参阅添加并行万博1manbetx处理支持

  • 当数据存储的分区不包含可读记录时,则方法必须返回空数据。的non-tall维度的非高维数方法在具有可读记录的分区上输出。该要求确保readall方法匹配收集函数。

介绍了R2017b