MATLAB: Adding new fields to a structure using for loop

for loopstructures

Hello everyone,
I have a beginners question on working with structures and for loops: I used the following loop to read csv files into a structure (The ReadResearch function was written by a collegue to read certain csv files from one of our programs):
csvFiles = dir('*.csv');
numfiles = length(csvFiles);
for k= 1:numfiles
data=ReadResearch(csvFiles(k).name);
csvFiles(k).name=data;
end
My problem is that if I rerun the skript to read in more files it does not add these files to the structure but overwrites the existing one. can someone explain me what I have to change?
Thank you,
Christoph

Best Answer

If you already have a csvFiles, the first line should be:
csvFiles = [csvFiles dir('*.csv')];
Before that I would suggest to:
% Calculate offset
offs = numel(csvFiles);
% New loop
for k = offs:lenght(csvFiles)
...
end
Otherwise you will be reading all the files again and not just the new ones.
EDIT
Basically the robustified version reads:
if exist('csvFiles','var')
offs = numel(csvFiles);
csvFiles = [csvFiles dir('*.csv')];
else
offs = 0;
end
numfiles = length(csvFiles);
for k = offs+1:numfiles
data = ReadResearch(csvFiles(k).name);
csvFiles(k).name = data;
end