Extract only numbers from a text file with Matlab
1 view (last 30 days)
Show older comments
In my txt file I have many lines with the following form:
I want to extract only the numbers that are between “ ” and after and only after x= and y=.
<Point x="-1.16804" y="-0.18000" z="1.60000" i="0.000000" j="0.000000" k="1.000000" u="1.000000" v="0.000000" w="0.000000" />
<Point x="-6.54428" y="-0.12000" z="1.60000" i="0.000000" j="0.000000" k="1.000000" u="1.000000" v="0.000000" w="0.000000" />
<Point x="-0.68936" y="-0.12000" z="1.60000" i="0.000000" j="0.000000" k="1.000000" u="1.000000" v="0.000000" w="0.000000" />
<Point x="-6.85390" y="-0.06000" z="1.60000" i="0.000000" j="0.000000" k="1.000000" u="1.000000" v="0.000000" w="0.000000" />
Can anyone help me?
Thank you.
0 Comments
Accepted Answer
Walter Roberson
on 29 Jun 2020
I recommend using regexp with named tokens and the 'names' option. For example
parts = regexp(S, 'x="(?<x>[^"])"\s+y="(?<y>[^"])', 'names')
parts would then be a struct array of character vectors with fields x and y
x = str2double({parts.x} );
y = str2double({parts.y} );
3 Comments
Walter Roberson
on 30 Jun 2020
str = fileread('code_trajectoire.txt');
parts = regexp(str, 'x="(?<x>[^"]+)"\s+y="(?<y>[^"]+)', 'names');
x=str2double({parts.x});
y=str2double({parts.y});
More Answers (0)
See Also
Categories
Find more on Characters and Strings 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!