# subset

Create subset of datastore or file-set

## Syntax

``subds = subset(ds,indices)``

## Description

example

````subds = subset(ds,indices)` returns a subset containing files corresponding to `indices`. The subset `subds` is of the same type as the input. if the input `ds` is a datastore, then the output `outds` is a datastore of the same type.if the input `ds` is a `DsFileSet`, `FileSet`, or `BlockedFileSet` object, then the output `subds` is also, respectively, a `DsFileSet`, `FileSet`, or `BlockedFileSet` object. ```

## Examples

collapse all

Make an image datastore object and then create a subset of that image datastore.

Create an image datastore `imds` for all the image files in a sample folder. Then, display the `Files` property of `imds`.

```folders = fullfile(matlabroot,'toolbox','matlab',{'demos','imagesci'}); exts = {'.jpg','.png','.tif'}; imds = imageDatastore(folders,'LabelSource','foldernames','FileExtensions',exts); imds.Files```
```ans = 8×1 cell array {'...\matlab\toolbox\matlab\demos\cloudCombined.jpg'} {'...\matlab\toolbox\matlab\demos\example.tif' } {'...\matlab\toolbox\matlab\demos\landOcean.jpg' } {'...\matlab\toolbox\matlab\demos\ngc6543a.jpg' } {'...\matlab\toolbox\matlab\demos\street1.jpg' } {'...\matlab\toolbox\matlab\demos\street2.jpg' } {'...\matlab\toolbox\matlab\imagesci\corn.tif' } {'...\matlab\toolbox\matlab\imagesci\peppers.png' }```

Create a subset datastore `subimds` that contains the first four files of `imds` and examine the `Files` property of `subimds`.

```indices = 1:4; subimds = subset(imds,indices); subimds.Files```
```ans = 4×1 cell array {'...\matlab\toolbox\matlab\demos\cloudCombined.jpg'} {'...\matlab\toolbox\matlab\demos\example.tif' } {'...\matlab\toolbox\matlab\demos\landOcean.jpg' } {'...\matlab\toolbox\matlab\demos\ngc6543a.jpg' }```

Make an image datastore, and then create subset datastore containing only a specified percentage of files, randomly selected from the original datastore.

Create `imageDatastore` for all the image files in a sample folder and display the `Files` property. This datastore contains 8 files.

```folders = fullfile(matlabroot,'toolbox','matlab',{'demos','imagesci'}); exts = {'.jpg','.png','.tif'}; imds = imageDatastore(folders,'LabelSource','foldernames','FileExtensions',exts); imds.Files```
```ans = 8×1 cell array {'...\matlab\toolbox\matlab\demos\cloudCombined.jpg'} {'...\matlab\toolbox\matlab\demos\example.tif' } {'...\matlab\toolbox\matlab\demos\landOcean.jpg' } {'...\matlab\toolbox\matlab\demos\ngc6543a.jpg' } {'...\matlab\toolbox\matlab\demos\street1.jpg' } {'...\matlab\toolbox\matlab\demos\street2.jpg' } {'...\matlab\toolbox\matlab\imagesci\corn.tif' } {'...\matlab\toolbox\matlab\imagesci\peppers.png' }```

Create a set of indices that represents randomly selected subset containing `60%` of the files.

```nFiles = length(imds.Files); RandIndices = randperm(nFiles); nSixtyPercent = round(0.6*nFiles); indices = RandIndices(1:nSixtyPercent)```
```indices = 8 6 4 5 1```

Create a subset datastore `submids` using `indices` and examine its `Files` property.

```subimds = subset(imds,indices); subimds.Files```
```ans = 5×1 cell array {'...\matlab\toolbox\matlab\imagesci\peppers.png' } {'...\matlab\toolbox\matlab\demos\street2.jpg' } {'...\matlab\toolbox\matlab\demos\ngc6543a.jpg' } {'...\matlab\toolbox\matlab\demos\street1.jpg' } {'...\matlab\toolbox\matlab\demos\cloudCombined.jpg'}```

## Input Arguments

collapse all

Input datastore or file-set, specified as `ImageDatastore`, `DsFileSet`, `FileSet`, `BlockedFileSet`object.

Indices of files to include in subset, specified as a vector of indices or a logical vector.

• The vector of indices must contain the indices of files to include in the subset `subds`.

• The logical vector must be of the same length as the number of files in the input `ds`. The `subset` method creates a subset `subds` containing files corresponding to the elements in the logical vector that have a value of `true`.

Elements of `indices` must be unique.

Data Types: `double` | `logical`