looking for specific data in a text file
1 view (last 30 days)
Show older comments
Hi, I need to extract information out of a total of 150 text files which record variables in different locations for each text file, For example:
#--------------------------- CI - Effective/Macro Compliance Matrix
0.1910E-01 -0.7317E-02 -0.7317E-02
-0.7317E-02 0.3140E-01 -0.1456E-01
-0.7317E-02 -0.1456E-01 0.3140E-01
0.9510E-01
0.1051E+00
0.1051E+00
Effective Engineering Moduli
E11S= 0.5235E+02
N12S= 0.3830
E22S= 0.3185E+02
N23S= 0.4637
E33S= 0.3185E+02
G23S= 0.1051E+02
G13S= 0.9514E+01
G12S= 0.9514E+01
Effective Thermal Expansion Coefficients
0.0000E+00 0.0000E+00 0.0000E+00
Is there a fast way of getting E22S and G23S for all 150 text files and store these values in an array. The issue here is that each text file stores this info in different lines but in the same order. Thank you for your help!!
Regards,
Ernesto
0 Comments
Accepted Answer
Cedric
on 5 Aug 2013
Edited: Cedric
on 5 Aug 2013
Something around the following solution would work well:
n = 150 ;
e22s = zeros(n,1) ;
g23s = zeros(n,1) ;
for k = 1 : n
fName = sprintf('myFile_%d.txt', k) ;
buffer = fileread(fName) ;
e22s(k) = str2double(regexp(buffer, '(?<=E22S=\s+)\S+', 'match')) ;
g23s(k) = str2double(regexp(buffer, '(?<=G23S=\s+)\S+', 'match')) ;
end
2 Comments
More Answers (1)
Azzi Abdelmalek
on 5 Aug 2013
fid = fopen('yourfilename.txt');
line1 = fgetl(fid);
res={line1};
while ischar(line1)
line1 = fgetl(fid);
res{end+1} =line1
end
fclose(fid);
res(end)=[]
idx=find(cellfun(@(x) ~isempty(regexp(x,'(E22S=)+','match')),res))
out=res{idx}
0 Comments
See Also
Categories
Find more on Characters and Strings in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!