How to process multiple txt files in a loop?

5 views (last 30 days)
I have multiple txt files in a folder, and I wrote a code to process a single file:
function output = do(input)
filename = ('c:\.....');
fileID = fopen(filename);
.....
process data
.....
output single output
fclose(fileID);
end
What is needed so that MATLAB processes all the files in the folder, and output all output into a single column matrix?
Much Thanks!

Accepted Answer

George
George on 27 Sep 2016
Get an array of file names and loop over that array. e.g.,
files = ['file1.txt' 'file2.txt' 'file3.txt'];
for ii = 1:numel(files)
fid = fopen(files(ii))
...
fclose(fid)
end
or you can use datastore() with the location as a wildcard.
  4 Comments
Nayani Ilangakoon
Nayani Ilangakoon on 7 Nov 2016
Hi George, I tried to use datastore to get multiple files to process. Although it shows it has got all the files, I do not know how to pull out data from each file into separate tall arrays. Any help is highly appreciated.
George
George on 9 Nov 2016
Datastore is probably not the best solution for that situation. It solves the opposite problem of "I don't care how many files my data is in, I want to aggregate it into a variable". Use dir to get the filenames.

Sign in to comment.

More Answers (1)

Massimo Zanetti
Massimo Zanetti on 27 Sep 2016
Edited: Massimo Zanetti on 27 Sep 2016
With DIR function you have access to all data in a folder. An example is
%provide the path to your folder as argument
MyFolderInfo = dir('C/...');
%the names of the files are:
%MyfolderInfo(1).name
%MyfolderInfo(2).name
%etc....
%for example you can run your function DO on each of them
for k=1:size(MyFolderInfo,1)
out{k} = do(MyFolderInfo(k).name);
end

Categories

Find more on File Operations in Help Center and File Exchange

Products

Community Treasure Hunt

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

Start Hunting!