Universidad San Pedro Semana 03 y 04 1
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
TIPOS DE DATOS
1. Tipos de datos:
En este manual se trabajara con tres tipos de datos:
1. Datos numéricos (numeric)
2. Las cadenas de caracteres (char)
3. Y las estructuras(struct)
Haremos uso de dos comando que generan una lista de las variables contenidas en el espacio de
trabajo actual: Who, whos; con el objetivo de verificar el tipo de dato.
2. Datos numéricos:
2.1. Números Enteros.
Tipo de dato Rango de valores Función de conversión
Entero con signo de 8 bits -2^7 a 2^7 - 1 Int8
Entero con signo de 16 bits -2^15 a 2^15 - 1 Int16
Entero con signo de 32 bits -2^31 a 2^31- 1 Int32
Entero con signo de 64 bits -2^63 a 2^31 - 1 Int64
Entero sin signo de 8 bits 0 a 2^8 - 1 Uint8
Entero sin signo de 16 bits 0 a 2^16 - 1 Uint16
Entero sin signo de 32 bits 0 a 2^32 - 1 Uint32
Entero sin signo de 64 bits 0 a 2^32 - 1 Uint64
Ejemplo: >> x=int16(32767)
x =
32767
>> %luego podemos verificar el tipo de dato de x mediante:
>> whos x
Name Size Bytes Class Attributes
x 1x1 2 int16
>> % o sino mediante:
>> tipox=class(x)
Universidad San Pedro Semana 03 y 04 2
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
tipox =
int16
Si se desea verificar que x es un tipo de dato entero se utiliza la funcion isinteger
>> isinteger(x)
ans =
1
Para convertir otro tipo de dato, como una cedana, e entero pueden utilizarse las funciones de
conversion como por ejemplo:
>> str= 'computacion II';
Luego aplicamos la fucnion de conversion a entero de int8 que convierte cada uno de los
elementos de str a entero con signo de 8 bit, es decir, obtenemos su respectivo codigo ASCII.
>> int8(str)
ans =
Columns 1 through 13
99 111 109 112 117 116 97 99 105 111 110 32 73
Column 14
73
>> % ejemplo 2
>> str='alumno';
>> int8(str)
ans =
97 108 117 109 110 111
2.2. Números Decimales.
Universidad San Pedro Semana 03 y 04 3
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
Matlab representa números decimales en formato simple y doble precisión. Por defecto es
de doble precisión, pero se puede convertir cualquier número a simple precisión con una
función de conversión.
a. Doble Precisión.
Valores máximos y mínimos de doble precisión
Las funciones realmax y realmin retornan los valores máximos y mínimos que pueden
representarse con el tipo doublé.
Ejemplo:
>> realmax
ans =
1.7977e+308
>> -realmax
ans =
-1.7977e+308
>> realmin
ans =
2.2251e-308
>> -realmin
ans =
-2.2251e-308
Creación de datos de doble precisión
Como el tipo de dato numérico por defecto en Matlab es de doble precisión, solo se
requiere una simple sentencia de comandos.
Ejemplo:
>> x=18.04;
>> whos x
Name Size Bytes Class Attributes
Universidad San Pedro Semana 03 y 04 4
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
x 1x1 8 double
>> %para verificar que un dato es decimal(o punto flotante)...
>> %se hace usop de la funcion isfloat.
>> isfloat(x)
ans =
1
Conversión a doble precisión.
Se pueden convertir otros datos numéricos, caracteres o cadenas, y datos lógicos a
doble precisión usando la función Matlab doublé.
Ejemplo:
>> y=int64 (-961258);
>> % crea un entero de 64 bits
>> x=double(y) %convierte a doble
x =
-961258
>> whos x
Name Size Bytes Class Attributes
x 1x1 8 double
b. Simple precisión.
Valores máximos y mínimos de doble precisión
Las funciones realmin y realmax cuando se llaman con el argumento ‘single’ retornan los
valores máximos y mínimos que pueden representarse con el tipo single.
Ejemplo:
>> realmax('single')
ans =
3.4028e+038
>> -realmax ('single')
ans =
Universidad San Pedro Semana 03 y 04 5
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
-3.4028e+038
>> realmin('single')
ans =
1.1755e-038
>> -realmin ('single')
ans =
-1.1755e-038
Los números más grandes que realmax(‘single’) o menosres que realmin (‘single’) se les
asigna los valores del infinito positivo (inf) y negativo (-inf) respectivamente.
Creación de datos de doble precisión
Con el tipo de dato numérico por defecto de Matlab es doble precisión, entonces se
requiere una función de conversión single para crear un número de simple precisión.
Ejemplo:
>> x=single(13.04); %crea un tipo de dato decimal single
>> whos x
Name Size Bytes Class Attributes
x 1x1 4 single
>> isfloat(x)
ans =
1
Conversión a doble precisión.
Se pueden convertir otros datos numéricos, caracteres o cadenas, y datos lógicos a
doble precisión usando la función Matlab single.
Ejemplo:
>> y=int64(-270819080303); %crea un entero de 64 bits
>> x=single(y)
x = -2.7082e+011
Universidad San Pedro Semana 03 y 04 6
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
>> whos x
Name Size Bytes Class Attributes
x 1x1 4 single
2.3. Números complejos.
Consisten de 2 partes separadas: una parte real y otra imaginaria. La base imaginaria es la
raíz cuadrada de -1. Este es representado en Matlab por cualquiera de las dos letras: i ó j.
Creación de números complejos.
Existen 2 formas:
La primera es asignar a una variable un valor complejo de la forma a+bi.
Ejemplo:
>> x=24+5i
x = 24.0000 + 5.0000i
La segunda es utilizando la función complex. Se combina 2 entradas, la primera es real y la
segunda es imaginaria.
Ejemplo:
>> x=[10 20; 6 12]
x =
10 20
6 12
>> y=[13 7; 2 8]
y =
13 7
2 8
>> z=complex (x,y)
z =
10.0000 +13.0000i 20.0000 + 7.0000i
6.0000 + 2.0000i 12.0000 + 8.0000i
Universidad San Pedro Semana 03 y 04 7
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
>> % para encontrar la parte real e imaginaria utilizamos la funcion real e imag,
respectivamente:
>> zr=real(z)
zr =
10 20
6 12
>> zi=imag(z)
zi =
13 7
2 8
2.4. Valores Especiales.
Matlab usa los valores especiales inf, -inf y NaN para representar valores que son
infinitamente positivos, negativos y aquellos que no son un número respectivamente.
Casos en que se retorna el valor infinito.
>> x=1/0
x =
Inf
>> x=log(0)
x =
-Inf
>> x=1.e1000
x =
Inf
>> x=exp(1000)
x =
Inf
Universidad San Pedro Semana 03 y 04 8
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
Casos en que se retorna el valor NaN.
Matlab representa valores que no son números reales ni complejos con un valor especial
NaN (not a Number). Expresiones como0/0 y inf/inf dan como resultado NaN, por ejemplo:
Pi Numero pi=301415926
Exr(1) 0 a 2^16-1
Inf 0 a 2^32-1
NaN 0 a 2^32-1
2.5. Comandos que identifican el tipo de dato numérico.
Para identificar el tipo de dato de una variable x se puede usar cualquiera de las
expresiones.
Comando Operación
Whos x Visualiza el tipo de dato x
Isnumeric(x) Determina si x es un tipo de dato numérico
Isa (x, ‘integer’) Determina si x es del tipo numérico especificado
Isa(x, ‘uint64’) Determina si x es del tipo numérico especificado
Isa(x, ‘float’) Determina si x es del tipo numérico especificado
Isa(x, ‘double’) Determina si x es del tipo numérico especificado
Isa(x, ‘single’) Determina si x es del tipo numérico especificado
Isreal(x) Determina si x es número real o complejo
Isnan(x) Determina si x no es numero (NaN)
Isinf(x) Determina si x es infinito
Isfinite(x) Determina si x es finito
2.6. Formato de valores numéricos.
A continuación se presenta los diferentes formatos que usa Matlab en la visualización de
sus variables.
Tipo Resultado
Short Escala el formato a 5 dígitos
Shorte Escala el formato a 5 dígitos. Añade la e.
Shortg El más conveniente de los short.
Long Escala el formato a 15 dígitos.
Long e Escala el formato a 15 dígitos. Añade la e.
Long g El más conveniente de los long.
Rat En forma de fracción.
hex Hexadecimal (representación en base a 16).
Bank Establece 2 cifras decimales
Compact Suprime el exceso de líneas.
loose Añade mas salidas para que la salida sea más legible.
Universidad San Pedro Semana 03 y 04 9
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
La función format cambia la visualización de los valores numéricos mostrados en la ventana de
comandos. Esta configuración solo afecta la forma en la que los números son visualizados, no
como Matlab los calcula.
Format, por si solo cambia al formato por defecto, que es short.
Format tipo, cambia el formato especificado por tipo.
La función get(0,’format’) verifica el formato actual.
>> x=[24/7 9.656896e-6];
>> format short
>> x
x = 3.4286 0.0000
>> format short e
>> x
x = 3.4286e+000 9.6569e-006
>> format short g
>> x
x =3.4286 9.6569e-006
>> format long
>> x
x =3.428571428571428 0.000009656896000
>> format long e
>> x
x =3.428571428571428e+000 9.656896000000000e-006
>> format long g
Universidad San Pedro Semana 03 y 04 10
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
>> x
x =3.42857142857143 9.656896e-006
>> format bank
>> x
x =3.43 0.00
>> format rat
>> x
x =24/7 1/103553
>> format compact
>> x
x = 24/7 1/103553
>> format loose
>> x
x =24/7 1/103553
3. CADENA DE CARACTERES.
En Matlab cadena se refiere a un arreglo de caracteres UNICODE. La cadena es un vector,
donde cada elemento de este vector es un carácter.
3.1. Creación de una cadena de caracteres (arreglo de caracteres de una dimensión)
Se especifica el dato carácter ubicando a los caracteres dentro de un par de comillas
simples.
Ejemplo:
>> curso='computacion II'
curso = computacion II
>> whos curso
Name Size Bytes Class Attributes
Universidad San Pedro Semana 03 y 04 11
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
curso 1x14 28 char
Las funciones class e ischar muestran la identidad del curso como un arreglo de caracteres.
>> class(curso)
ans =char
>> ischar(curso)
ans = 1
La función de concatenación strcat o el operando de concatenación MATLAB[], permite unir
2 o más caracteres generando un nuevo arreglo de caracteres.
>> Curso='computacion II de la escuela profesional de mecánica eléctrica';
>> Universidad='SAN PEDRO';
>> strcat(universidad, ',', curso)
ans = SAN PEDRO, computación II de la escuela profesional de mecánica eléctrica
Para concatenar cadenas verticalmente use strvcat
>> curso='computación II';
>> universidad='SAN PEDRO';
>> strvcat(universidad, ',', curso)
ans =
SAN PEDRO
,
Computación II
3.2. Creación de arreglos de caracteres de 2 dimensiones.
Cuando creamos arreglos de caracteres bidimensionales, debemos estar seguros que cada
fila tenga la misma longitud.
La siguiente matriz tiene 3 cadenas todas de 8 caracteres cada una.
Ejemplo:
>> ciudades=['chimbote'; 'trujillo'; 'chiclayo']
ciudades =
Universidad San Pedro Semana 03 y 04 12
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
chimbote
trujillo
Chiclayo
Cuando creamos arreglos de caracteres desde cadenas de diferentes tamaños, se debe
rellenar las cadenas más cortas con espacio en blanco para forzar a que las filas sean de la
misma longitud.
Ejemplo:
>> escuelas=['informatica';'mecanica '; 'industrial ';'agronomia ']
escuelas =
Informática
Mecánica
Industrial
Agronomía
Una función simple de crear cadenas de arrglo usando la función char. Char
automáticamente rellena todas las cadenas a la longitud de la cadena de entrada más
larga.
Distritos=char(‘Chimbote’, ‘nuevo Chimbote’)
Distritos =
Chimbote
Nuevo Chimbote
La función deblank permite extraer una o más cadenas de un arreglo.
>> Distritos=char('Chimbote', 'nuevo Chimbote', 'lince', 'los olivos')
Distritos =
Universidad San Pedro Semana 03 y 04 13
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
Chimbote
Nuevo Chimbote
Lince
Los olivos
>> Distritos=deblank(distritos(1,:))
Distritos =
Chimbote
La función deblank también permite remover los espacios en blanco.
>> A{1,1}= 'MATLAB ';
>> A{1,2}= 'SIMULINK ';
>> A=deblank (A)
A = 'MATLAB' 'SIMULINK'
3.3. Comparación de cadenas.
Se pueden comparar cadenas utilizando funciones u operaciones.
a. Comparación con funciones.
Función Descripción
Strcmp Determina si 2 cadenas son idénticas. Reconoce mayúsculas y minúsculas.
Strncmp Determina si los primeros n caracteres de 2 cadenas son idénticos. Reconoce
mayúsculas y minúsculas.
Strcmpi Determina si 2 cadenas son idénticas. No diferencia entre mayúsculas y
minúsculas.
strncmpi Determina si los primeros n caracteres de 2 cadenas son idénticos. No
diferencia entre mayúsculas y minúsculas.
b. Comparación utilizando operadores.
Se pueden utilizar los operadores relacionales de MATLAB en arreglos de caracteres,
siempre que los arreglos que están comparando tengan iguales dimensiones o uno sea
escalar.
Universidad San Pedro Semana 03 y 04 14
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
Todos los operadores relacionales (>,>=,<,<=, ==, ~ =) comparan los valores de sus
respectivos caracteres.
>> a='Gavidia';
>> b='Gambini';
>> a==b
ans = 1 1 0 0 0 0 0
3.4. Comandos que identifican a un carácter.
Isletter determina si un carácter es una letra. Ejemplo:
>> ciclo='3 ciclo';
>> x=isletter(ciclo)
x = 0 0 1 1 1 1 1
Isspace determina si un carácter es un espacio en blanco (blanco, tab o línea en
blanco). Ejemplo:
>> ciclo='3 ciclo';
>> y=isspace(ciclo)
y = 0 1 0 0 0 0 0
3.5. Comandos que buscan y reemplazan caracteres.
Strrep permite cambiar los caracteres de una cadena. Ejemplo:
>> fecha='domingo 20/04/11';
>> correccionfecha=strrep(fecha,'20/04/11', '24/04/11')
correccionfecha = domingo 24/04/11
Findstr devuelve la posición inicial de una subcadena contenida a lo largo de la
cadena. Ejemplo:
>> fecha='domingo 20/04/11';
>> posicion=findstr('24', correccionfecha)
posicion =9
Universidad San Pedro Semana 03 y 04 15
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
Strmatch busca a través de las filas de un arreglo de cadenas para encontrar las
cadenas que empiecen con la serie de caracteres dada. Esta función retorna los índices
de las filas que empiezan con estos caracteres.
Nota: Antes de ejecutar el siguiente ejercicio, activar en file/preferences/command
Windows la opción wrap lines.
Ejemplo:
nombres=char('salome(pacifico)', 'sanson(hijo del sol)', 'saviondo(venerable)', 'sofia(la
reina)', 'salia (princesa)');
>> silaba=strmatch('sa',nombres)
Silaba =
1
2
3
5
3.6. Evaluación de cadenas: función EVAL.
Eval: evalua una cadena que contiene una expresión MATLAB, sentencia o llamada a
función, su sintaxis es:eval(‘string’).
>> x=[1:8];
>> y=eval('(x+2)./x')
y =
Columns 1 through 6
3.0000 2.0000 1.6667 1.5000 1.4000 1.3333
Columns 7 through 8
1.2857 1.2500
>> cadena1='sin(x*(pi/2))';
Universidad San Pedro Semana 03 y 04 16
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
>> z=eval(cadena1)
z =
Columns 1 through 6
1.0000 0.0000 -1.0000 -0.0000 1.0000 0.0000
Columns 7 through 8
-1.0000 -0.0000
>> whos x y cadena1
Name Size Bytes Class Attributes
cadena1 1x13 26 char
x 1x8 64 double
y 1x8 64 double
4. CONVERSION DE VALORES NUMERICOS A CADNAS Y VICIVERSA, Y ENTRE DIFERENTES BASES.
4.1. Conversión de valores numéricos a cadenas.
Comando Operación
Chard Convierte un entero positivo a su equivalente carácter (código
UNICODE). Trunca cualquier parte fraccional.
Int2str Convierte un entero positivo o negativo a un tipo carácter.
Num2str Convierte un tipo numérico a un tipo carácter de precisión y
formato especifico.
Mat2str Convierte un tipo numérico a un tipo carácter de determinada
precisión, retornando una cadena MATLAB que puede ser
evaluada.
Dec2hex Convierte un tipo numérico a un tipo carácter de base
Universidad San Pedro Semana 03 y 04 17
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
hexadecimal.
Dec2bin Convierte un tipo numérico a un tipo carácter de base binaria.
Dec2base Convierte un tipo numérico a un tipo carácter de cualquier base
de 2 a 36.
Ejemplo:
1. Convertir cada valor numérico de esta matriz [85 78 73 86 69 82 83 73 68 65 68], a sus
correspondientes equivalentes caracteres ASCII. Ejemplo:
>> char([85 78 73 86 69 82 83 73 68 65 68])
ans =UNIVERSIDAD
>> char([69 83 67 85 69 76 65])
ans = ESCUELA
>>char([65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
90])
ans = ABCDEFGHIJKLMNOPQRSTUVWXYZ
2. Convertir la siguiente matriz: [-85 78 -73 77 -65 83 -84 69 82] a una variable cadena de
carácter. Utilice los comandos int2str y num2str, es decir:
>> int2str([-85 78 -73 77 -65 83 -84 69 82])
ans =-85 78 -73 77 -65 83 -84 69 82
>> num2str([-85 78 -73 77 -65 83 -84 69 82])
ans =-85 78 -73 77 -65 83 -84 69 82
3. Convertir esta matriz [85 69 73] de base 10 a base 2.
>> dec2hex([85 69 73])
Universidad San Pedro Semana 03 y 04 18
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
ans =
55
45
49
4. Convertir esta matriz [85 69 73] de base 10 a base 2.
>> dec2bin([85 69 73])
ans =
1010101
1000101
1001001
5. Transformar el siguiente valor numérico x=4.756 a un tipo de cadena de caracteres.
>> x=4.756;
>> y=num2str(x)
y =
4.756
>> whos x y cadena1
Name Size Bytes Class Attributes
cadena1 1x13 26 char
x 1x1 8 double
y 1x5 10 char
Nota:las funciones int2str y num2str suelen ser usadas para etiquetar graficos.
x=[85 78 65 83];
str1=num2str(min(x));
str2=num2str(max(x));
salida=['valor de x desde' ',' str1 ' hasta' ',' str2]
Universidad San Pedro Semana 03 y 04 19
Doc. Ing. Suxe Ramírez Alicia Curso: Computación II Ciclo: III
Salida = valor de x desde 65hasta 85
Si no se utilizara la función num2str el resultado sería valor x desde a hasta u.
4.2. Conversión de cadenas a valores numéricos.
Comando Operación
uintN Convierte un carácter a un código entero que representa el carácter.
Str2num Convierte un tipo carácter a un tipo numérico.
Str2double Similar a strnum, pero ofrece una mayor calidad o trabajo con arreglos
de cadenas.
Hex2num Convierte un tipo numérico a un tipo carácter de precisión especifica,
retornando una cadena que MATLAB puede evaluar.
Hex2dec Convierte un tipo carácter de base hexadecimal aun entero positivo.
Bin2dec Convierte un tipo positivo a un tipo carácter de base binaria.
Bese2dec Convierte un entero positivo a un tipo carácter de cualquier base desde
2 hasta 36.
5. ESTRUCTURAS.
Recommended