Main Content

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));

基于 imds1imds2 创建一个合并数据存储。

imdsCombined = combine(imds1,imds2);

从合并数据存储中读取第一对图像。对此合并数据存储的每次读取操作都会返回一对图像,表示为 1×2 元胞数组。

dataOut = read(imdsCombined)
dataOut=1×2 cell array
    {480x640x3 uint8}    {480x640 uint8}

显示对合并数据存储的第一次读取的输出。

imshow(imtile(dataOut));

Figure contains an axes object. The hidden axes object contains an object of type image.

创建一个依次从两个图像数据存储中读取数据的数据存储。

创建一个 ImageDatastore ds1,它表示一个包含两个图像的集合。然后,通过将 ds1 的图像变换为灰度图像,创建第二个数据存储 ImageDatastore ds2。合并 ds1ds2 以创建一个 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);

输入参数

全部折叠

要合并的数据存储,指定为两个或多个以逗号分隔的数据存储对象。有关内置数据存储的完整列表,请参阅Select Datastore for File Format or Application。您还可以指定自定义数据存储。

读取数据的顺序,指定为 "associated""sequential"

  • "associated" 创建一个 CombinedDatastore 对象,它是从每个基础数据存储进行读取操作的水平串联结果。

  • "sequential" 创建一个 SequentialDatastore 对象,该对象从基础数据存储中按顺序读取数据,而不进行串联。

扩展功能

版本历史记录

在 R2019a 中推出

全部展开