I'm trying to create a loop in which i can extract 4 columns and multiple rows from 18 difference txt files and save the extracted data in one file. Is this possible? This is my code from one file

1 view (last 30 days)
fid1 = fopen('filename');
loopdata = textscan(fid1, '%f %f %f %f', 'delimiter',',','headerlines', 86);
fclose(fid1);
loopdata
field = loopdata{1};
moment = loopdata{2};
fieldAdjusted = loopdata{3};
momentAdjusted = loopdata{4};

Answers (1)

George
George on 26 Oct 2016
Untested, but this should basically work. Get an array of filenames with ls
files = ls('*.txt');
for ii=1:numel(files)
fid1 = fopen(files(ii));
loopdata = textscan(fid1, '%f %f %f %f', 'delimiter',',','headerlines', 86);
fclose(fid1);
% change this to saving data in arrays, this replaces everything every time
field = loopdata{1};
moment = loopdata{2};
fieldAdjusted = loopdata{3};
momentAdjusted = loopdata{4};
end
T = table(field, moment, fieldAdjusted, momentAdjusted);
writetable(T, 'mycombinedfile.txt');
If the files are very large you can look into datastore

Community Treasure Hunt

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

Start Hunting!