子集
创建数据存储或文件集的子集
描述
例子
创建子集ImageDatastore
创建一个图像数据存储对象,然后创建该图像数据存储的一个子集。
创建映像数据存储洛桑国际管理发展学院
用于示例文件夹中的所有图像文件。然后,显示文件
的属性洛桑国际管理发展学院
.
文件夹= fullfile(matlabroot,“工具箱”,matlab的, {“演示”,“imagesci”});Exts = {“jpg”,“使用”,“.tif”};imds = imageDatastore(文件夹,“LabelSource”,“foldernames”,“FileExtensions”ext);洛桑国际管理发展学院。文件
ans = 8×1 cell array{…\matlab\工具箱\matlab\demos\ cloud组合.jpg'}{…\matlab\工具箱\matlab\demos\landOcean.jpg'}{…\matlab\工具箱\matlab\demos\ngc6543 .jpg'}{…\matlab\工具箱\matlab\demos\street1.jpg'}{…\matlab\工具箱\matlab\demos\street2.jpg'}{…\matlab\工具箱\matlab\imagesci\玉米.tif'}{…\matlab\工具箱\matlab\imagesci\辣椒.png'}
创建一个子集数据存储subimds
的前四个文件洛桑国际管理发展学院
并检查文件
的属性subimds
.
指数= 1:4;Subimds =子集(imds,索引);subimds。文件
ans = 4×1 cell array{'…\matlab\toolbox\matlab\demos\ cloud组合.jpg'}{'…\matlab\toolbox\matlab\demos\example.tif'}{'…\matlab\toolbox\matlab\demos\landOcean.jpg'}{'…\matlab\toolbox\matlab\demos\ngc6543 .jpg'}
用随机选择的文件创建子集数据存储
创建一个图像数据存储,然后创建只包含指定百分比的文件的子集数据存储,从原始数据存储中随机选择。
创建imageDatastore
用于示例文件夹中的所有图像文件,并显示文件
财产。该数据存储包含8个文件。
文件夹= fullfile(matlabroot,“工具箱”,matlab的, {“演示”,“imagesci”});Exts = {“jpg”,“使用”,“.tif”};imds = imageDatastore(文件夹,“LabelSource”,“foldernames”,“FileExtensions”ext);洛桑国际管理发展学院。文件
ans = 8×1 cell array{…\matlab\工具箱\matlab\demos\ cloud组合.jpg'}{…\matlab\工具箱\matlab\demos\landOcean.jpg'}{…\matlab\工具箱\matlab\demos\ngc6543 .jpg'}{…\matlab\工具箱\matlab\demos\street1.jpg'}{…\matlab\工具箱\matlab\demos\street2.jpg'}{…\matlab\工具箱\matlab\imagesci\玉米.tif'}{…\matlab\工具箱\matlab\imagesci\辣椒.png'}
创建一组表示随机选择包含的子集的索引60%
文件的。
nFiles = length(imds.Files);randindexes = randperm(nFiles);n60% = round(0.6*nFiles);指数= RandIndices(1: n60%)
指数= 8 6 4 5
创建一个子集数据存储submids
使用指数
检查它文件
财产。
Subimds =子集(imds,索引);subimds。文件
ans = 5×1 cell array{'…\matlab\toolbox\matlab\imagesci\椒。png'}{'…\matlab\toolbox\matlab\demos\street2.jpg'}{'…\matlab\toolbox\matlab\demos\ngc6543 .jpg'}{'…\matlab\toolbox\matlab\demos\street1.jpg'}{'…\matlab\toolbox\matlab\demos\ cloud组合.jpg'}
比较数据粒度
比较粗粒度分区和细粒度子集。
读取视频文件中的所有帧xylophone.mp4
然后构造一个ArrayDatastore
对象对其进行迭代。结果对象有141帧。
v =视频阅读器(“xylophone.mp4”);allFrames = read(v);arrds = arrayDatastore(allFrames,IterationDimension=4,OutputType=“细胞”, ReadSize = 4);
要提取一组特定的相邻帧,请创建四个粗粒度的分区arrds。
提取第二个分区,它有35帧。
Partds =分区(arrds,4,2);imshow (imtile (partds.readall ()))
从中提取六个不相邻的帧arrds
在指定的索引上使用细粒度子集。
Subds =子集(arrds,[67 79 82 69 89 33]);imshow (imtile (subds.readall ()))
输入参数
ds
- - - - - -输入数据存储或文件集
matlab.io.Datastore
对象|文件集
对象|DsFileSet
对象|BlockedFileSet
对象
输入数据存储或文件集,指定为数据存储
,文件集
,DsFileSet
,或BlockedFileSet
对象。
指数
- - - - - -要包含在子集中的文件的索引
指标向量|逻辑向量
子集中要包含的文件的索引,指定为索引向量或逻辑向量。
索引向量必须包含要包含在子集中的文件的索引
再分
.逻辑向量的长度必须与输入中的文件数相同
ds
.的子集
方法创建一个子集。再分
包含与逻辑向量中值为的元素对应的文件真正的
.
的元素指数
必须是唯一的。
数据类型:双
|逻辑
扩展功能
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
使用注意事项和限制:
在基于线程的环境中,可以使用
子集
仅适用于以下数据存储:ImageDatastore
对象CombinedDatastore
,SequentialDatastore
,或TransformedDatastore
从中创建的对象ImageDatastore
通过使用结合
或变换
你可以使用
子集
与其他数据存储,如果您有并行计算工具箱™。为此,请使用进程支持的并行池而不是使用backgroundPool
或ThreadPool
(使用ProcessPool
或ClusterPool
).
有关更多信息,请参见在线程环境中运行MATLAB函数.
版本历史
在R2019a中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。