Main Content

isShuffleable

确定数据存储是否可乱序

自 R2020a 起

说明

示例

如果数据存储 ds 可乱序,则 tf = isShuffleable(ds) 返回逻辑值 1 (true)。否则,结果为逻辑值 0 (false)。

  • 如果所有基础数据存储均可乱序,则 TransformedDatastore 可乱序。

  • 如果所有基础数据存储都具有 subset 方法,或都是具有 subset 方法的数据存储的变换/组合,则 CombinedDatastoreSequentialDatastore 可乱序。

  • 如果自定义数据存储类是 matlab.io.datastore.Shuffleable 的子类,则它们可乱序。

您可以对可乱序的数据存储使用 shuffle 函数来随机化文件排序,同时保留不同数据存储中文件的行关联。

示例

全部折叠

创建一个 ImageDatastore,然后编写一条仅在数据存储可乱序时才对其进行乱序的 if/else 语句。

imageFiles = {'street1.jpg','street2.jpg','peppers.png','corn.tif'};
imds = imageDatastore(imageFiles);
if isShuffleable(imds)
    newds = shuffle(imds);
    disp('Shuffling successful.')
else
    disp('Datastore is not shuffleable.')
end
Shuffling successful.

现在创建一个 CombinedDatastore 对象,它包含 imds 的两个副本。使用相同的 if/else 测试来对该数据存储进行乱序处理。

cds = combine(imds,imds);
if isShuffleable(cds)
    newds = shuffle(cds);
    disp('Shuffling successful.')
else
    disp('Datastore is not shuffleable.')
end
Shuffling successful.

在本例中,合并数据存储 cds 可乱序,因为基础 ImageDatastore 对象具有 subset 方法。

创建另一个 CombinedDatastore 对象,但这次基于 TabularTextDatastore 对象构造该对象。在本例中,合并数据存储不可乱序,因为基础 TabularTextDatastore 对象没有 subset 方法。

ttds = tabularTextDatastore('outages.csv');
cds = combine(ttds,ttds);
if isShuffleable(cds)
    newds = shuffle(cds);
    disp('Shuffling successful.')
else
    disp('Datastore is not shuffleable.')
end
Datastore is not shuffleable.

输入参数

全部折叠

输入数据存储。您可以将下列数据存储用作输入:

  • MATLAB® 数据存储 - 使用 MATLAB datastore 函数创建的数据存储。例如,使用 ImageDatastore 为图像集合创建一个数据存储。有关完整的数据存储列表,请参阅Select Datastore for File Format or Application

  • 合并、排序和变换数据存储 - 使用 combinetransform 函数创建的数据存储。

  • 自定义数据存储 - 使用自定义数据存储框架创建的数据存储。基于 matlab.io.Datastore 子类化的任何数据存储都支持 isShuffleable 函数。有关详细信息,请参阅Develop Custom Datastore

扩展功能

版本历史记录

在 R2020a 中推出