partition
划分数据存储
语法
说明
示例
为大型文件集合创建数据存储。对于此示例,请使用示例文件 airlinesmall.csv 的十个副本。要处理表格数据中的缺失字段,请指定名称-值对组 TreatAsMissing 和 MissingValue。
files = repmat({'airlinesmall.csv'},1,10);
ds = tabularTextDatastore(files,...
'TreatAsMissing','NA','MissingValue',0);将数据存储划分为三个部分并返回第一个分区。partition 函数返回数据存储 ds 中大约三分之一的数据。
subds = partition(ds,3,1);
数据存储的 Files 属性包含该数据存储中所包含文件的列表。检查数据存储 ds 和分区后的数据存储 subds 的 Files 属性中的文件数。数据存储 ds 包含十个文件,分区 subds 包含前四个文件。
length(ds.Files)
ans = 10
length(subds.Files)
ans = 4
根据示例文件 mapredout.mat(mapreduce 函数的输出文件)创建一个数据存储。
ds = datastore('mapredout.mat');为 ds 获取默认数量的分区。
n = numpartitions(ds);
将数据存储划分到默认数量的分区中并返回与第一个分区对应的数据存储。
subds = partition(ds,n,1);
读取 subds 中的数据。
while hasdata(subds) data = read(subds); end
创建一个包含三个图像文件的数据存储。
ds = imageDatastore({'street1.jpg','peppers.png','corn.tif'})
ds =
ImageDatastore with properties:
Files: {
' ...\folder1\street1.jpg';
' ...\folder1\peppers.png';
' ...\folder1\corn.tif'
}
ReadSize: 1
Labels: {}
ReadFcn: @readDatastoreImage
按文件划分数据存储并返回与第二个文件对应的部分。
subds = partition(ds,'Files',2)
subds =
ImageDatastore with properties:
Files: {
' ...\folder1\peppers.png'
}
ReadSize: 1
Labels: {}
ReadFcn: @readDatastoreImage
subds 包含一个文件。
根据示例文件 mapredout.mat(mapreduce 函数的输出文件)创建一个数据存储。
ds = datastore('mapredout.mat');将数据存储划分为并行池中的三个工作单元的 3 个部分。
numWorkers = 3; p = parpool('local',numWorkers); n = numpartitions(ds,p); parfor ii=1:n subds = partition(ds,n,ii); while hasdata(subds) data = read(subds); end end
比较粗粒度分区和细粒度子集。
读取视频文件 xylophone.mp4 中的所有帧,并构造一个 ArrayDatastore 对象对其进行迭代。生成的对象有 141 个帧。
v = VideoReader("xylophone.mp4"); allFrames = read(v); arrds = arrayDatastore(allFrames,IterationDimension=4,OutputType="cell",ReadSize=4);
要提取一组特定的相邻帧,请创建 16 个粗粒度 arrds 分区。提取第二个分区,它有 9 个帧。
partds = partition(arrds,16,2); imshow(imtile(partds.readall()))

使用细粒度子集在指定索引处从 arrds 中提取两个不相邻的帧。
subds = subset(arrds,[67 79]); imshow(imtile(subds.readall()))

输入参数
输入数据存储。可以使用 datastore 函数根据您的数据创建数据存储对象。
分区数量,指定为正整数。
如果您指定的分区数不是数据存储中文件数的数字因子,则 partition 将从第一个分区开始,将剩余的每个观测值放置在现有分区中。
包含一个额外观测值的现有分区数等于数据存储中的文件数除以分区数所得的余数。例如,如果您的数据存储对象包含 23 个文件,并且您要将其划分为 3 个部分,则 partition 创建的前两个分区将各包含 8 个文件,最后一个分区将包含 7 个文件。
示例: 3
数据类型: double
索引,指定为正整数。
示例: 1
数据类型: double
文件名,指定为字符向量或字符串标量。
filename 的值必须与数据存储的 Files 属性包含的文件名完全匹配。要确保文件名完全匹配,请使用 ds.Files{N} 指定 filename,其中 N 是 Files 属性中的文件的索引。例如,ds.Files{3} 指定数据存储 ds 中的第三个文件。
示例: ds.Files{3}
示例: 'file1.csv'
示例: '../dir/data/file1.csv'
示例: 'hdfs://myserver:7867/data/file1.txt'
数据类型: char
输出参量
输出数据存储。输出数据存储的类型与输入数据存储 ds 的类型相同。
扩展功能
partition 函数支持基于线程的环境,但有以下用法说明和限制:
在基于线程的环境中,您只能对以下数据存储使用
partition:ImageDatastore对象使用
combine或transform从ImageDatastore对象创建的CombinedDatastore、SequentialDatastore或TransformedDatastore对象
如果您有 Parallel Computing Toolbox™,则可以对其他数据存储使用
partition。为此,请使用基于进程的并行池运行该函数,而不是使用backgroundPool或ThreadPool(使用ProcessPool或ClusterPool)。
有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2015a 中推出
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)