MATLAB Answers

How to process multiple txt files in a loop?

64 views (last 30 days)
Terek Li
Terek Li on 27 Sep 2016
Commented: George on 9 Nov 2016
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!

  0 Comments

Sign in to comment.

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

Show 1 older comment
George
George on 27 Sep 2016
You don't have to type them all in. datastore will let you use a wildcard and dir will let you capture file names in a directory.
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

  0 Comments

Sign in to comment.

Products


Translated by