combine
合并来自多个数据存储的数据
说明
dsnew = combine(
使用 ds1,ds2,...,dsN
)read
函数对输入数据存储返回的数据,合并多个数据存储以创建一个 CombinedDatastore
对象。
dsnew = combine(
根据指定的读取顺序合并多个数据存储。读取顺序确定是创建 ds1,ds2,...,dsN
,ReadOrder=order
)CombinedDatastore
还是 SequentialDatastore
对象。
示例
合并数据存储
创建一个数据存储,用于维护基础数据存储的图像对之间的奇偶校验。例如,创建两个单独的图像数据存储,然后创建一个从这两个图像数据存储中读取对应图像的合并数据存储。
创建一个表示三个图像的集合的数据存储 imds1
。
imds1 = imageDatastore({'street1.jpg','street2.jpg','peppers.png'});
通过将 imds1
的图像变换为灰度图像,创建第二个数据存储 imds2
。
imds2 = transform(imds1,@(x) im2gray(x));
基于 imds1
和 imds2
创建一个合并数据存储。
imdsCombined = combine(imds1,imds2);
从合并数据存储中读取第一对图像。对此合并数据存储的每次读取操作都会返回一对图像,表示为 1
×2
元胞数组。
dataOut = read(imdsCombined)
dataOut=1×2 cell array
{480x640x3 uint8} {480x640 uint8}
显示对合并数据存储的第一次读取的输出。
imshow(imtile(dataOut));
按顺序组合数据存储
创建一个依次从两个图像数据存储中读取数据的数据存储。
创建一个 ImageDatastore
ds1
,它表示一个包含两个图像的集合。然后,通过将 ds1
的图像变换为灰度图像,创建第二个数据存储 ImageDatastore
ds2
。合并 ds1
和 ds2
以创建一个 SequentialDatastore
对象。
ds1 = imageDatastore(["peppers.png","street2.jpg"]); ds2 = transform(ds1, @(x) {im2gray(x)}); dsseq = combine(ds1,ds2,ReadOrder="sequential");
从该 SequentialDatastore
对象中读取前三个图像。对此 SequentialDatastore
对象的每个读取操作都返回一个由 1×1 元胞数组表示的图像。
img1 = read(dsseq); img2 = read(dsseq); img3 = read(dsseq);
输入参数
ds1,ds2,...,dsN
— 要合并的数据存储
数据存储对象
要合并的数据存储,指定为两个或多个以逗号分隔的数据存储对象。有关内置数据存储的完整列表,请参阅Select Datastore for File Format or Application。您还可以指定自定义数据存储。
order
— 读取数据的顺序
"associated"
(默认) | "sequential"
读取数据的顺序,指定为 "associated"
或 "sequential"
。
"associated"
创建一个CombinedDatastore
对象,它是从每个基础数据存储进行读取操作的水平串联结果。"sequential"
创建一个SequentialDatastore
对象,该对象从基础数据存储中按顺序读取数据,而不进行串联。
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
用法说明和限制:
在基于线程的环境中,您只能对以下数据存储使用
combine
:ImageDatastore
对象使用
combine
或transform
从ImageDatastore
对象创建的CombinedDatastore
、SequentialDatastore
或TransformedDatastore
对象
如果您有 Parallel Computing Toolbox™,则可以对其他数据存储使用
combine
。为此,请使用基于进程的并行池运行该函数,而不是使用backgroundPool
或ThreadPool
(使用ProcessPool
或ClusterPool
)。
有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2019a 中推出R2022b: 从多个数据存储中按顺序读取数据
从多个数据存储中按顺序读取数据,而无需进行串联。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)