Extract numeric data from cell

25 vues (au cours des 30 derniers jours)
Baklouti Sana
Baklouti Sana le 9 Fév 2021
Commenté : Jan le 9 Fév 2021
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 commentaires
Baklouti Sana
Baklouti Sana le 9 Fév 2021
It is a cell :)
Jan
Jan le 9 Fév 2021
Then use:
B = A{1}
Now it is a CHAR vector again.

Connectez-vous pour commenter.

Réponse acceptée

Mathieu NOE
Mathieu NOE le 9 Fév 2021
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 commentaires
Baklouti Sana
Baklouti Sana le 9 Fév 2021
Thank you @Mathieu NOE
This solved my problem!
Stephen23
Stephen23 le 9 Fév 2021
Modifié(e) : Stephen23 le 9 Fév 2021
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

Connectez-vous pour commenter.

Plus de réponses (1)

Jan
Jan le 9 Fév 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 commentaire
Baklouti Sana
Baklouti Sana le 9 Fév 2021
@Jan Thank you for your response. However, I am using MATLAB 2016a and the function extractBetween is not supported.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Help Center et File Exchange

Produits


Version

R2016b

Community Treasure Hunt

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

Start Hunting!

Translated by