Extract numeric data from cell

조회 수: 26 (최근 30일)
Baklouti Sana
Baklouti Sana 2021년 2월 9일
댓글: Jan 2021년 2월 9일
I need to extract numbers from a cell and put them in a matrix.
My cell is expressed as following:
A={'position: [0.5418702363967896, 0.0005752428551204503, -3.834952076431364e-05, 0.0, 0.0, 0.0]'};
I tried the following example but it does not consider the e-5 .
A1 = regexp(A,'[\d*\.]*\d*','match')
A2 = [A1{:}]
out = str2double(strcat(A2{:}))
I need to get the full number to be able to make some calculations.
Thank you for help.
  댓글 수: 3
Baklouti Sana
Baklouti Sana 2021년 2월 9일
It is a cell :)
Jan
Jan 2021년 2월 9일
Then use:
B = A{1}
Now it is a CHAR vector again.

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

채택된 답변

Mathieu NOE
Mathieu NOE 2021년 2월 9일
hello
A = {'position: [0.5418702363967896, 0.0005752428551204503, -3.834952076431364e-05, 0.0, 0.0, 0.0]'};
A1 = regexp(char(A),'[-+]?([0-9]*[.])?[0-9]+([eE][-+]?\d+)?','match'); % extract numerical content of string
out = str2double(A1);
  댓글 수: 2
Baklouti Sana
Baklouti Sana 2021년 2월 9일
Thank you @Mathieu NOE
This solved my problem!
Stephen23
Stephen23 2021년 2월 9일
편집: Stephen23 2021년 2월 9일
More efficient than this answer:
format short G
A = {'position: [0.5418702363967896, 0.0005752428551204503, -3.834952076431364e-05, 0.0, 0.0, 0.0]'};
X = find(A{1}=='[',1);
V = sscanf(A{1}(1+X:end),'%f,')
V = 6×1
0.54187 0.00057524 -3.835e-05 0 0 0

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

추가 답변 (1개)

Jan
Jan 2021년 2월 9일
A = ['position: [0.5418702363967896, 0.0005752428551204503, ', ...
'-3.834952076431364e-05, 0.0, 0.0, 0.0]'];
D = extractBetween(A, '[', ']');
data = sscanf(D{1}, '%g,')
  댓글 수: 1
Baklouti Sana
Baklouti Sana 2021년 2월 9일
@Jan Thank you for your response. However, I am using MATLAB 2016a and the function extractBetween is not supported.

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

카테고리

Help CenterFile Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

제품


릴리스

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by