How to open multiple text files and populating matrices with the data
1 view (last 30 days)
Show older comments
Md. Golam Mostafa
on 19 Nov 2016
Edited: Md. Golam Mostafa
on 21 Nov 2016
I have written the following codes to open a text file and populate a matrix with the data. It works fine.
fid=fopen('01_06_13hi.txt'); %Opens the file
allData =[]; %Creats a matrix to store all data
n = 0;
while feof(fid)== 0;
d1 = fgetl(fid); % reading the file line by line
if strfind(d1,'-NaN') %Overrules the 'Not a Number' value
else
n=n+1;
ind= find(d1(:)==':'); %finds ':' in the data string and storing in variable 'ind'
ind2 = find(d1(:)=='/'); %finds '/' in the data string and storing in variable 'ind2'
d1(ind) = ' '; %string data
d1(ind2) = ' '; %string data
d2 = str2num(d1); % converting the data from string to number
allData(n,:) = d2; %Storing data of d2
end
end
Now I have some 630 .txt files. I have tried to modify the the code as follows:
filesFolder = 'lo_hi1/';
allTextFiles = dir([filesFolder,'*.txt']);
numberOfTextFiles = numel(allTextFiles);
nameOfTextFiles = {allTextFiles.name};
allData =[];
n = 0;
for i=1:numberOfTextFiles
fileID=fopen(nameOfTextFiles{i});
while feof(fileID)== 0;
d1 = fgetl(fileID);
if strfind(d1,'-NaN')
else
n=n+1;
ind= find(d1(:)==':');
ind2 = find(d1(:)=='/');
d1(ind) = ' ';
d1(ind2) = ' ';
d2 = str2num(d1);
allData(n,:) = d2;
end
end
fclose(fileID); %closing the file
end
I expected it to work but unfortunately it is not working. The command window showed the following:
Error using feof Invalid file identifier. Use fopen to generate a valid file identifier.
Error in multifileload (line 15) while feof(fileID)== 0;
Can anyone help me out?
Accepted Answer
Walter Roberson
on 20 Nov 2016
fileID = fopen( fullfile(filesFolder, nameOfTextFiles{i}));
1 Comment
More Answers (0)
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!