MATLAB load 2nd column of all files into matrix
    6 views (last 30 days)
  
       Show older comments
    
I have a folder with a lot of files of the form: defects_*.txt
Assuming the path to the directory containing these files is C:/Path, how can I load all the files into MATLAB, and create a matrix that contains the 2nd column of each file in the directory.
So basically, I don't care about column 1, but I want to load in the files sequentially, defects_002.txt, defects_005.txt, etc. (no constant increment), and then take the 2nd column from each of these txt files, and paste them as separate columns in a new matrix. So I will have a new matix where column 1 is the 2nd column of defects_0.002.txt, column 2 is the 2nd column of defects_0.005.txt etc. Is this possible?
2 Comments
Answers (1)
  Walter Roberson
      
      
 on 20 Sep 2018
        Reading only the second column can be done in a number of different ways, depending upon the format of the data. One possible way is to use csvread with the r and c parameters both set to 1 -- the r being 1 to skip 1 header row, and the c being 1 to skip 1 column.
6 Comments
  Walter Roberson
      
      
 on 20 Sep 2018
				projectdir = 'C:/Path';
dinfo = dir( fullfile(projectdir, 'defects_*.txt') );
filenames = fullfile(projectdir, {dinfo.name});
nfiles = length(filenames);
data = [];
for K = 1  : nfiles
   fid = fopen(filenames{K}, 'rt');
   thisdata = cell2mat( textscan(fid, '%*f%f', 'HeaderLines', 1) );
   fclose(fid);
   data(1:length(thisdata), K) = thisdata;
end
See Also
Categories
				Find more on Low-Level File I/O 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!

