How do I create datastore class interactively?

3 次查看(过去 30 天)
I have a folder of spreadsheet files containing three subfolders. I am using datastore to read the data from the spreadsheets.
I need to get the data from each of the subfolders individually and store them as ds1,ds2,ds3 for subfolder1,2 and 3 respectively.
I am doing the following:
for k = 1:3
ds = datastore('subfolder%d.xls',k)
end
I get the following errors:
Error in datastore:
Expected a string for the parameter name, instead the input type was 'double'.
Error in datastore>parseFileBasedNVPairs
parse(inpP, varargin{:});
Error in datastore
fileBasedNV = parseFileBasedNVPairs(varargin{:});
I am able to understand the origin of first error, but then I cannot find any way to resolve it.

采纳的回答

Steven Lord
Steven Lord 2017-5-8
You're missing an sprintf call. You should probably also store your datastore objects in a cell array (or perhaps a regular array of datastore objects; I'm not certain off the top of my head if that's allowed.)
ds{k} = datastore(sprintf('subfolder%d.xls',k))

更多回答(1 个)

Edric Ellis
Edric Ellis 2017-5-9
Further to @Steven's suggestion, you might instead wish to create a single datastore referring to all the files. See the documentation for more, but basically you could do:
ds = datastore('subfolder*.xls');
or perhaps the following which explicitly picks only files 1:3.
fileNames = strcat('subfolder', strsplit(num2str(1:3)), '.xls');
ds = datastore(fileNames);

类别

Help CenterFile Exchange 中查找有关 Datastore 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by