필터 지우기
필터 지우기

Extract only numbers from a text file with Matlab

조회 수: 2 (최근 30일)
K. Taieb
K. Taieb 2020년 6월 29일
댓글: K. Taieb 2020년 7월 1일
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.

채택된 답변

Walter Roberson
Walter Roberson 2020년 6월 29일
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
Walter Roberson
Walter Roberson 2020년 6월 30일
str = fileread('code_trajectoire.txt');
parts = regexp(str, 'x="(?<x>[^"]+)"\s+y="(?<y>[^"]+)', 'names');
x=str2double({parts.x});
y=str2double({parts.y});
K. Taieb
K. Taieb 2020년 7월 1일
Great!
Thank you

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 String Parsing에 대해 자세히 알아보기

태그

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by