MATLAB: Indexing a variable

indexingvariable

Hi,
I'm looking for some guidance on how you would index variables. I have read a couple of forums but with no clear picture.
I have looped a matrix array (5×1) of a numerical form to obtain a string output of 5 ".mat" files that has data stored in them. What I want to do next is Load these .mat files in a loop and let Matlab iterate it for each file such that I get my plots for each (or string in this case).
A simple example, for loop output –> mat files = A_1, A_2, A_3, A_4, A_5
load A_1, A_2, A_3, A_4, A_5 each time to create the plots. (?) or extend the above for-loop further to load the file each iteration. (?)
Now, I could load each file each time and get the results (load A_1 then load A_2 etc…) But if there could be some sort of a variable counter that would be great (less work… lol). Further, the 1 to 5 numerical value of the mat file was set by me. (If it would help).
Thanks
Ferd

Best Answer

list = dir('A_*.mat');
Data = cell(1, length(list));
for k = 1:length(list)
matFilename = list(k).name;
matData = load(matFilename);
Data{k} = matData.A;
% Or if the file A_1 contains the matrix A_1:
% [dummy, name] = fileparts(matFilename);
% Data{k} = matData.(name);
% Or:
% Data{k} = matData.(sprintf('A_%d', k));
end
Be sure to read this also: FAQ: How can I create A1, A2, ... and consider the recommendation to avoid hiding an index in the name of a variable.