Is there a function like string2double that can handle a numerical input?
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Connor Brackley
el 21 de En. de 2019
Comentada: Connor Brackley
el 24 de En. de 2019
Hi!
I am importing data that sometimes imports as a string, and sometimes as a number. In all cases I want a number. Is there a function like string2double that can handle a numerical input?
Right now it works like:
>> str2num('2')
ans =
2
>> str2num(2)
Error using str2num (line 35)
Input must be a character vector or string scalar.
Ideally it would work like:
>> FunctionLikestr2num('2')
ans =
2
>> FunctionLikestr2num(2)
ans =
2
Thank you!
0 comentarios
Respuesta aceptada
Steven Lord
el 21 de En. de 2019
First test if the input isnumeric. If it's not, try converting it from text data to a number.
2 comentarios
Stephen23
el 22 de En. de 2019
Editada: Stephen23
el 22 de En. de 2019
+1 a much more efficient solution.
The multiple type conversions used in the accepted answer are not necessary, and likely lose data precision and slow down the code. This is a much better answer: it makes it clear what the intent is.
Más respuestas (1)
Luna
el 21 de En. de 2019
You can do it first convert to string then convert to numeric:
str2num(string(2))
str2num(string('2'))
Both gives you numeric 2.
5 comentarios
Stephen23
el 22 de En. de 2019
Editada: Stephen23
el 22 de En. de 2019
@Luna: unfortunately str2num hides an eval call inside itself, which is why experienced MATLAB users try to avoid using it (especially inside loops). That is why str2double is recommended. The documentation states: "str2double Similar to str2num, but offers better performance and works with string arrays and cell arrays of character vectors."
Luna
el 22 de En. de 2019
I will use recommended str2double then.
Ver también
Categorías
Más información sobre Data Type Conversion en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!