setdiff関数では該当するFilesフィールドのみ除かれ、その他のフィールドは除かれません。
イメージ データのデータ ストア - MATLAB - MathWorks 日本:リンク先の例を真似て下記を試してみます
- 2枚の画像からイメージデータストアimdsを作る
- 削除対象(例として1番目)をファイル名で検索しインデックスを得る
- subset関数でimdsの内削除対象以外からなるサブセットsubimdsを作る
- subimdsから削除対象が除かれたかどうか確認する
imds = imageDatastore(fullfile(matlabroot,"toolbox","matlab"),... % 2枚の画像からimdsを作る
"IncludeSubfolders",true,"FileExtensions",".tif","LabelSource","foldernames")
delimg = matches(imds.Files, imds.Files(1,1)) % 削除対象(例として1番目)をファイル名で検索しインデックスを得る
subimds = subset(imds, ~delimg) % subset関数でimdsの内削除対象以外からなるサブセットsubimdsを作る
% subimdsから削除対象が除かれたかどうか確認する ↑ 1番目のexample.tif(ラベル名demos)が除かれた
>imageDataStoreに含まれるimageのうち上から順に5つのデータを取り除きたいです。
上記の例では2つしか画像が無いですが、下記の様に検索対象を複数にすれば上から順に5つのデータが取り除けます。
% delimg = matches(imds.Files, imds.Files(1:5,1))
% -----------------------------------------↑ココ