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

Categories

Find more on Data Import and Export in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!