Extract numeric data from cell

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 Commenti

Jan
Jan il 9 Feb 2021
This is not a cell, but a CHAR vector.
It is a cell :)
Then use:
B = A{1}
Now it is a CHAR vector again.

Accedi per commentare.

 Risposta accettata

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 Commenti

Thank you @Mathieu NOE
This solved my problem!
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

Accedi per commentare.

Più risposte (1)

Jan
Jan il 9 Feb 2021
A = ['position: [0.5418702363967896, 0.0005752428551204503, ', ...
'-3.834952076431364e-05, 0.0, 0.0, 0.0]'];
D = extractBetween(A, '[', ']');
data = sscanf(D{1}, '%g,')

1 Commento

@Jan Thank you for your response. However, I am using MATLAB 2016a and the function extractBetween is not supported.

Accedi per commentare.

Categorie

Prodotti

Release

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by