MATLAB: How to create multiple variables for further processing in a for-loop from imported tables

MATLABreadtablevariables

Hi all,
I am working on improving the efficiency of codes created and have modified the codes from this example for my application: How can I process a sequence of files?
for k = 1:13
matFileName = sprintf('XXX_#%d.txt', k);
if exist(matFileName, 'file')
Table(k) = readtable(matFileName); % error here
% without error: Table = readtable(matFileName);
% save(['FileName' num2str(k)],'Table'); % Need to use a second loop to load the mat-files
else
fprintf('File %s does not exist.\n', matFileName);
end
end
How can I create workspace variables from these imported tables for further processing? This error was shown "Subscripting a table using linear indexing (one subscript) or multidimensional indexing (three or more subscripts) is not supported. Use a row subscript and a variable subscript."
I have attempted to first save the imported tables and then load the mat.file using another for-loop. Is there a direct way of creating workspace variables from these imported tables in one single for-loop?
Thank you for your support.

Best Answer

You could save the data as a cell array instead, by changing the braces
T{k} = readtable(matFileName);
I would recommend not naming your variable Table, as it's quite similar to the function table
If you want the name of the variable to reflect the file name, then I'd recommend using dynamic field variables
data.(sprintf('file%d',k)=readtable(matFileName);
which you call by e.g.
data.file1