MATLAB: Reading mat files with variables that have different names

cell arrays

Hi there,
I am trying to load a bunch of mat files, the contents of which are CELL variables. For example when I load a file named "part1_240_T_1200_sig_25.mat", I get a variable named new_X1 which is a cell of size 1 by 240………I tried various things like calling it in a structure, loading it like new_X = load('part1_240_T_1200_sig_25.mat'), but I still cant automate the process. At the end, I woud like to load the files in a loop (which I have done) but also change the variable names dynamically as the loop goes through several mat files.
So, if I could get something like
for ii = 1:files_length
eval(['load ' files(ii).name ])
num = size(new_X*{"ii"}*,2); %......change the cell variable name with the loop index
end
Would num2str work?? Thanks

Best Answer

Just do something like this:
for ii = 1:files_length
% Get filename
filename = fullfile(pwd, files(ii).name)
% Load the file into a structure.
storedStructure = load(filename);
% Extract the new_X1 into a vector. We expect that it's a scalar.
% Otherwise use
% new_X{loopIndex} = storedStructure.new_X1;
% to put it into one cell of a cell array.
new_X(loopIndex) = storedStructure.new_X1;
% Now do something with new_X in this loop.
end
You're reading in the files incorrectly (by using eval). See the FAQ for some correct ways to read in the various files in a loop: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F. While you're at it, read this FAQ entry also: http://matlab.wikia.com/wiki/FAQ#How_can_I_create_variables_A1.2C_A2.2C....2CA10_in_a_loop.3F