Effacer les filtres
Effacer les filtres

Convert a single char array to a vector of doubles with a non-whitespace delimiter [R2017b, Windows7]

7 vues (au cours des 30 derniers jours)
Hi,
I have a binary file that when I load up into Matlab produces the following cell which contains a cell array called data:
1x1 cell array:
{'44.565,433.4544,34.332'}
This can be a very long list of numbers and I would like to avoid using str2num (which works fine). I have tried using:
slope = sprintf('%s,',data{:})
doubleArray = sscanf(slope, '%f')
This only give me the first number. I suspect this is because I have a ',' as a delimiter and not a whitespace character.
str2double(data)
returns a NaN and I suspect this is because I have a single char array in a cell and not an array of strings.
Any advice as to how to do this without str2num?
Cheers, TJ

Réponse acceptée

Birdman
Birdman le 4 Jan 2018
Modifié(e) : Birdman le 4 Jan 2018
a={'44.565,433.4544,34.332'};
str=a{1}(:);
strNum=str2double(strsplit(str.',','))
Thanks to Stephen Cobeldick, another and faster approach:
sscanf(a{1}, '%f,')
  2 commentaires
TJ
TJ le 4 Jan 2018
Thanks, that worked great. I also found that the following works:
strNum = sscanf(a{:}, '%f,')
Birdman
Birdman le 4 Jan 2018
My pleasure and you had multiple options, perfect!

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Data Type Conversion dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by