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

Jan
Jan 2021년 2월 9일
This is not a cell, but a CHAR vector.
Baklouti Sana
Baklouti Sana 2021년 2월 9일
It is a cell :)
Then use:
B = A{1}
Now it is a CHAR vector again.

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

 채택된 답변

Mathieu NOE
Mathieu NOE 2021년 2월 9일

2 개 추천

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일

0 개 추천

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.

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

카테고리

도움말 센터File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기

제품

릴리스

R2016b

질문:

2021년 2월 9일

댓글:

Jan
2021년 2월 9일

Community Treasure Hunt

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

Start Hunting!

Translated by