subset

Create subset of datastore or file-set

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 object, then the output subds is also a DsFileSet 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 object or a DsFileSet 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

Introduced in R2019a