How to read the text files sequentially?
Mostrar comentarios más antiguos
I have 15 text files such as CASE1,CASE2.... CASE15. I would like to read all these files sequentially and use for some calculations inside nested loops. I tried this code
for k=1:15
textFilename=['CASE' num2str(k) '.txt'];
id=fopen('C:\Documents and Settings\guestaskin\Desktop\model\textFilename','rt');
textdata=textscan(id,'%s%s');
fclose(id);
end
However, it gives an error like that .. ''Invalid file identifier. Use fopen to generate a valid file identifier.''
Could you tell me what is wrong in this code and how can I make it work ?
2 comentarios
Image Analyst
el 25 de Jun. de 2012
The FAQ will show you: http://matlab.wikia.com/wiki/FAQ#How_can_I_process_a_sequence_of_files.3F
Stephen23
el 26 de Jun. de 2017
See Image Analyst's answer for a good explanation and solution. Storing the filenames is not required.
Respuesta aceptada
Más respuestas (1)
Image Analyst
el 25 de Jun. de 2012
The main problem is that you didn't construct the filename properly. You hard coded textFilename into the string instead of the contents of the textFilename variable into the string. Here's a better, more robust way of doing it (untested since I don't have your files)
folder = 'C:\Documents and Settings\guestaskin\Desktop\model';
for k=1:15
baseFilename = sprintf('CASE%d.txt', k);
fullFileName = fullfile(folder, baseFileName);
if exist(fullFileName, 'file')
id=fopen(\textFilename','rt');
textdata{k} = textscan(id,'%s%s');
fclose(id);
else
warningMessage = sprintf('Warning: file does not exist:\n%s', fullFileName);
uiwait(warndlg(warningMessage);
textdata{k} = warningMessage;
end
end
Categorías
Más información sobre Language Support en Centro de ayuda y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!