How can I process a sequence of files?
No products are associated with this question.
If the files that you want to process are sequentially numbered, like "file1.txt", "file2.txt", "file3.txt", etc. then you can use SPRINTF or NUM2STR to create the filename and LOAD, IMREAD, FOPEN, etc. to retrieve the data from the file. (Also note the three different ways of building the filename - you can use your favorite way.)
% Read files file1.txt through file20.txt, mat1.mat through mat20.mat % and image1.jpg through image20.jpg. Files are in the current directory. for k = 1:20 matFilename = sprintf('mat%d.mat', k); matData = load(matFilename); jpgFilename = strcat('image', num2str(k), '.jpg'); imageData = imread(jpgFilename); textFilename = ['file', num2str(k), '.txt']; fid = fopen(textFilename, 'rt'); textData = fread(fid); fclose(fid); end
In the above code, matData, imageData, and textData will get overwritten each time. You should save them to an array or cell array if you need to use them outside the loop, otherwise use them immediately inside the loop.
If instead you want to process all the files whose name matches a pattern in a directory, you can use DIR to select the files. Note that while this example uses *.jpg as the pattern and IMREAD to read in the data, as with the previous example you could use whatever pattern and file reading function suits your application's needs:
myFolder = 'C:\Documents and Settings\yourUserName\My Documents\My Pictures'; if exist(myFolder, 'dir') ~= 7 Message = sprintf('Error: The following folder does not exist:\n%s', myFolder); uiwait(warndlg(Message)); return; end filePattern = fullfile(myFolder, '*.jpg'); jpegFiles = dir(filePattern); for k = 1:length(jpegFiles) baseFileName = jpegFiles(k).name; fullFileName = fullfile(myFolder, baseFileName); fprintf('Now reading %s\n', fullFileName); imageArray = imread(fullFileName); imshow(imageArray); % Display image. drawnow; % Force display to update immediately. end
Or you can try a "File Exchange Pick of the Week": FileExchange: FileFun.
This answer is a modified version of:
matlab.wikia.com/wiki/FAQ: How_can_I_process_a_sequence_of_files [EDITED, link fixed by I.A.]
Examples in the documentation: