Convertir texto a valores numéricos
En este ejemplo se muestra cómo convertir texto en los valores numéricos que representa. Por lo general, tendrá que realizar dichas conversiones cuando tenga texto que represente números que se deseen representar en una gráfica o que se deseen utilizar en cálculos. Por ejemplo, el texto puede provenir de un archivo de texto o una hoja de cálculo. Si todavía no lo ha convertido a valores numéricos en el momento de importarlo a MATLAB®, puede utilizar las funciones que se muestran en este ejemplo.
Puede convertir arreglos de cadenas, vectores de caracteres y arreglos de celdas de vectores de caracteres a valores numéricos. El texto puede representar valores hexadecimales o binarios, aunque cuando los convierte a números se almacenan como valores decimales. También puede convertir texto que representa fechas y horas a valores datetime
o duration
, que pueden tratarse como valores numéricos.
Valores de doble precisión
La forma recomendada de convertir texto a valores de doble precisión es utilizar la función str2double
. Puede convertir vectores de caracteres, arreglos de cadenas y arreglos de celdas de vectores de caracteres.
Por ejemplo, cree un vector de caracteres utilizando comillas simples y conviértalo al número que representa.
X = str2double('3.1416')
X = 3.1416
Si el argumento de entrada es un arreglo de cadenas o un arreglo de celdas de vectores de caracteres, entonces str2double
lo convierte a un arreglo numérico del mismo tamaño. Puede crear cadenas utilizando comillas dobles. (Las cadenas tienen el tipo de datos string
, mientras que los vectores de caracteres tienen el tipo de datos char
).
str = ["2.718","3.1416"; "137","0.015"]
str = 2x2 string
"2.718" "3.1416"
"137" "0.015"
X = str2double(str)
X = 2×2
2.7180 3.1416
137.0000 0.0150
La función str2double
puede convertir texto que incluye comas (para separar los miles) y separadores decimales. Por ejemplo, puede utilizar str2double
para convertir la variable Balance
en la siguiente tabla. Balance
representa números como cadenas, utilizando una coma para separar los miles.
load balances
balances
balances=3×2 table
Customer Balance
_________ ___________
"Diaz" "13,790.00"
"Johnson" "2,456.10"
"Wu" "923.71"
T.Balance = str2double(T.Balance)
T=3×2 table
Customer Balance
_________ _______
"Diaz" 13790
"Johnson" 2456.1
"Wu" 923.71
Si str2double
no puede convertir texto en un número, entonces devuelve un valor NaN
.
Aunque la función str2num
también puede convertir texto a números, no se recomienda. str2num
utiliza la función eval
, que puede provocar efectos colaterales no deseados cuando la entrada de texto incluye el nombre de una función. Para evitar estos problemas, utilice str2double
.
Como alternativa, puede convertir cadenas a valores de doble precisión utilizando la función double
. Si la entrada es un arreglo de cadenas, entonces double
devuelve un arreglo numérico que tiene el mismo tamaño, al igual que str2double
. Sin embargo, si la entrada es un vector de caracteres, entonces double
convierte los caracteres individuales a números que representan sus valores Unicode®.
X = double("3.1416")
X = 3.1416
X = double('3.1416')
X = 1×6
51 46 49 52 49 54
Esta lista resume las prácticas recomendadas para convertir texto a valores numéricos.
Para convertir texto a valores numéricos, utilice la función
str2double
. Trata arreglos de cadenas, vectores de caracteres y arreglos de celdas de vectores de caracteres de forma consistente.También puede utilizar la función
double
para arreglos de cadenas. Sin embargo, trata los vectores de caracteres de forma distinta.Evite
str2num
. Llama a la funcióneval
, lo que puede tener consecuencias no deseadas.
Valores binarios y hexadecimales
Puede representar números hexadecimales y binarios como texto o como literales. Cuando los escribe como literales, debe utilizar los prefijos 0x
y 0b
. Cuando los representa como texto y los convierte, puede utilizar los prefijos, pero no es obligatorio.
Por ejemplo, escriba un número hexadecimal como un literal. El prefijo es obligatorio.
D = 0x3FF
D = uint16
1023
Después, convierta el texto que representa el mismo valor utilizando la función hex2dec
. Reconoce el prefijo, pero no lo necesita.
D = hex2dec('3FF')
D = 1023
D = hex2dec('0x3FF')
D = 1023
Convierta texto que representa valores binarios utilizando la función bin2dec
.
D = bin2dec('101010')
D = 42
D = bin2dec('0b101010')
D = 42
Fechas y horas
MATLAB proporciona los tipos de datos datetime
y duration
para almacenar fechas y horas, y para tratarlas como valores numéricos. Para convertir texto que representa fechas y horas, utilice las funciones datetime
y duration
.
Convierta texto que representa una fecha a un valor datetime
. La función datetime
reconoce muchos formatos comunes para fechas y horas.
C = '2019-09-20'
C = '2019-09-20'
D = datetime(C)
D = datetime
20-Sep-2019
Puede convertir arreglos que representan fechas y horas.
str = ["2019-01-31","2019-02-28","2019-03-31"]
str = 1x3 string
"2019-01-31" "2019-02-28" "2019-03-31"
D = datetime(str)
D = 1x3 datetime
31-Jan-2019 28-Feb-2019 31-Mar-2019
Si convierte texto a valores duration
, utilice los formatos hh:mm:ss
o dd:hh:mm:ss
.
D = duration('12:34:56')
D = duration
12:34:56
Consulte también
bin2dec
| hex2dec
| str2double
| datetime
| duration
| double
| table