Main Content

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ón eval, 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

| | | | | |

Temas relacionados