Reading numbers from a text file

1 view (last 30 days)
DJ
DJ on 17 Jul 2015
Edited: Andrei Bobrov on 17 Jul 2015
How to read only numbers from the file of following format
(title "dm_m")
(labels "dm_m" "Position")
((xy/key/label "point_40")
0.000128835 18.1347
)
((xy/key/label "point_41")
-4.16311e-06 20.2711
)
((xy/key/label "point_42")
8.93259e-05 22.4074
)
((xy/key/label "point_43")
0.000130064 24.5438
)
((xy/key/label "point_44")
0.000131733 26.6802
)
((xy/key/label "point_45")
0.000147312 28.8166
)
((xy/key/label "point_46")
0.000141488 30.9529
)
((xy/key/label "point_47")
0.000136125 33.0893
)
)

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 17 Jul 2015
Edited: Azzi Abdelmalek on 17 Jul 2015
Edit
fid=fopen('file.txt')
a=textscan(fid,'%s')
fclose(fid)
c=regexp(a{:},'\<(+|-|\.|\d)\d*(\.)?(\d+)?','match')
f=c(~cellfun(@isempty,c))
out=reshape(str2double([f{:}]'),2,[])

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 17 Jul 2015
Edited: Andrei Bobrov on 17 Jul 2015
f = fopen('data_in_your_format.txt');
c = textscan(f,'%s','delimiter','\n');
fclose(f);
c = c{:};
[~,~,~,z] = regexp(c,'-*\d+\.\d+(e-*\d+)*');
z1 = z(~cellfun(@isempty,z));
out = str2double(reshape([z1{:}],2,[])');
  2 Comments
DJ
DJ on 17 Jul 2015
Edited: Stephen23 on 17 Jul 2015
Thank you code 2 works perfectly if the numbers are positive but if numbers are negative it doesn't work. Is there some modification to be done? If the numbers are mix of positives and negatives
Andrei Bobrov
Andrei Bobrov on 17 Jul 2015
Edited: Andrei Bobrov on 17 Jul 2015
corrected 2

Sign in to comment.

Categories

Find more on Genomics and Next Generation Sequencing 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!