Azzera filtri
Azzera filtri

Transformation form char to double

127 visualizzazioni (ultimi 30 giorni)
jrbbrt
jrbbrt il 9 Ago 2018
Commentato: jrbbrt il 9 Ago 2018
Hi everyone .. I know this should be a simple one, but somehow I'm doing hard on this task ...
I got: A row of chars representing numbers, which for example look like this '1799', '1,867', '0,219', '-0,719502', etc. and are saved in cells (200x1 cell).
So what I want to do: is converting those chars into the equivalent numbers they're representing!
My idea:
  1. was - due them being in a cell - using cell2mat ... which isn't working because Matlab says "Dimensions of arrays being concatenated are not consistent.".
  2. So my next thought I had was simply using str2double ... here the problem is that all the commas are deleted and for example instead of '0,219' I end up with the number 219. Not what I need.
  3. Elsewise I had the idea of using strsplit after using char on my row. Unfortunately here Matlab says my "'STRING' input must be either a char row vector, a cell array of char row vectors, or a string array."
  4. So my latest approach is using:
str2double(char(myrow(:,1)'));
... which results in 'NaN' as my answer. What am I doing wrong?
I appreciate your thoughts! Best regards.

Risposta accettata

Stephen23
Stephen23 il 9 Ago 2018
Modificato: Stephen23 il 9 Ago 2018
You need both strrep and str2double:
>> C = {'1799', '1,867', '0,219', '-0,719502'};
>> str2double(strrep(C,',','.'))
ans =
1799.00000 1.86700 0.21900 -0.71950
Native MATLAB only uses decimal point as the decimal radix character, never a comma, so you will always have to convert this explicitly.
  1 Commento
jrbbrt
jrbbrt il 9 Ago 2018
Thanks for your quick respond and explanation Stephen!

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Data Type Conversion in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by