Main Content

subset

データストアまたは FileSet のサブセットの作成

説明

subds = subset(ds,indices) は、indices に対応する読み取り値を含むサブセットを返します。サブセット subds のタイプは、入力と同じになります。

  • 入力 ds がデータストアの場合、出力 outds は同じタイプのデータストア。

  • 入力 dsFileSetDsFileSet または BlockedFileSet オブジェクトの場合、出力 subds もそれぞれ FileSetDsFileSet または BlockedFileSet オブジェクト。

すべて折りたたむ

イメージの datastore オブジェクトを作成してから、そのイメージ データストアのサブセットを作成します。

サンプル フォルダー内のすべてのイメージ ファイル用のイメージ データストア imds を作成します。次に、imdsFiles プロパティを表示します。

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'   }

imds の最初の 4 つのファイルを含むサブセット データストア subimds を作成し、subimdsFiles プロパティを確認します。

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'     }

イメージ データストアを作成してから、元のデータストアから指定の割合でランダムに選択されたファイルのみを含むサブセット データストアを作成します。

サンプル フォルダー内のすべてのイメージ ファイル用に imageDatastore を作成し、Files プロパティを表示します。このデータストアには 8 つのファイルが含まれています。

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'   }

ファイルの 60% を含み、ランダムに選択されたサブセットを表すインデックスのセットを作成します。

nFiles = length(imds.Files);
RandIndices = randperm(nFiles);
nSixtyPercent = round(0.6*nFiles);
indices = RandIndices(1:nSixtyPercent)
indices =

     8     6     4     5     1

indices を使用してサブセット データストア submids を作成し、その Files プロパティを確認します。

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'}

粒度の粗い分割と粒度の細かいサブセットを比較します。

ビデオ ファイル xylophone.mp4 のすべてのフレームを読み取り、反復処理するための ArrayDatastore オブジェクトを作成します。結果のオブジェクトには 141 個のフレームがあります。

v = VideoReader("xylophone.mp4");
allFrames = read(v);
arrds = arrayDatastore(allFrames,IterationDimension=4,OutputType="cell",ReadSize=4);

隣接するフレームの特定のセットを抽出するために、arrds の粒度の粗い分割を 4 個作成します。35 個のフレームをもつ、2 番目の分割を抽出します。

partds = partition(arrds,4,2);
imshow(imtile(partds.readall()))

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

粒度の細かいサブセットを使用して、指定されたインデックスにおける 6 個の隣接しないフレームを arrds から抽出します。

subds = subset(arrds,[67 79 82 69 89 33]);
imshow(imtile(subds.readall()))

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

入力引数

すべて折りたたむ

入力のデータストアまたはファイル セット。datastoreFileSetDsFileSet、または BlockedFileSet オブジェクトとして指定します。

サブセットに含めるファイルのインデックス。インデックスのベクトルまたは logical ベクトルとして指定します。

  • インデックスのベクトルには、サブセット subds に含めるファイルのインデックスを含めなければならない。

  • logical ベクトルの長さは、入力 ds のファイル数と同じでなければならない。subset メソッドは、値 true をもつ logical ベクトルの要素に対応するファイルを含むサブセット subds を作成します。

indices の要素は一意でなければなりません。

データ型: double | logical

拡張機能

バージョン履歴

R2019a で導入