Adding new fields to a structure using for loop

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

1 comentario

Oleg Komarov
Oleg Komarov el 10 de Ag. de 2011
Just for future reference (you question is clear): http://www.mathworks.com/matlabcentral/answers/6200-tutorial-how-to-ask-a-question-on-answers-and-get-a-fast-answer

Iniciar sesión para comentar.

 Respuesta aceptada

Oleg Komarov
Oleg Komarov el 10 de Ag. de 2011
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

Más respuestas (1)

Categorías

Más información sobre Loops and Conditional Statements en Centro de ayuda y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by