Semana 03 y 04
TIPOS DE DATOS
1. Tipos de datos:
En este manual se trabajara con tres tipos de datos:
1. Datos numricos (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 numricos:
2.1. Nmeros Enteros.
Tipo de dato
Rango de valores
Funcin de conversin
-2^7 a 2^7 - 1
Int8
-2^15 a 2^15 - 1
Int16
-2^31 a 2^31- 1
Int32
-2^63 a 2^31 - 1
Int64
0 a 2^8 - 1
Uint8
0 a 2^16 - 1
Uint16
0 a 2^32 - 1
Uint32
0 a 2^32 - 1
Uint64
1x1
2 int16
Curso: Computacin II
Ciclo: III
Semana 03 y 04
tipox =
int16
Para convertir otro tipo de dato, como una cedana, e entero pueden utilizarse las funciones de
conversion como por ejemplo:
Curso: Computacin II
Ciclo: III
Semana 03 y 04
Matlab representa nmeros decimales en formato simple y doble precisin. Por defecto es
de doble precisin, pero se puede convertir cualquier nmero a simple precisin con una
funcin de conversin.
a. Doble Precisin.
Valores mximos y mnimos de doble precisin
Las funciones realmax y realmin retornan los valores mximos y mnimos 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
Creacin de datos de doble precisin
Como el tipo de dato numrico por defecto en Matlab es de doble precisin, solo se
requiere una simple sentencia de comandos.
Ejemplo:
>> x=18.04;
>> whos x
Name Size
Doc. Ing. Suxe Ramrez Alicia
Bytes Class
Attributes
Curso: Computacin II
Ciclo: III
Semana 03 y 04
1x1
8 double
1x1
Bytes Class
Attributes
8 double
b. Simple precisin.
Valores mximos y mnimos de doble precisin
Las funciones realmin y realmax cuando se llaman con el argumento single retornan los
valores mximos y mnimos que pueden representarse con el tipo single.
Ejemplo:
>> realmax('single')
ans =
3.4028e+038
>> -realmax ('single')
ans =
Curso: Computacin II
Ciclo: III
Semana 03 y 04
-3.4028e+038
>> realmin('single')
ans =
1.1755e-038
>> -realmin ('single')
ans =
-1.1755e-038
Los nmeros ms grandes que realmax(single) o menosres que realmin (single) se les
asigna los valores del infinito positivo (inf) y negativo (-inf) respectivamente.
1x1
4 single
>> isfloat(x)
ans =
1
Conversin a doble precisin.
Se pueden convertir otros datos numricos, caracteres o cadenas, y datos lgicos a
doble precisin usando la funcin Matlab single.
Ejemplo:
>> y=int64(-270819080303); %crea un entero de 64 bits
>> x=single(y)
x = -2.7082e+011
Doc. Ing. Suxe Ramrez Alicia
Curso: Computacin II
Ciclo: III
Semana 03 y 04
>> whos x
Name Size
x
Bytes Class
1x1
Attributes
single
Curso: Computacin II
Ciclo: III
Semana 03 y 04
>> % 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 nmero respectivamente.
Curso: Computacin II
Ciclo: III
Semana 03 y 04
Numero pi=301415926
0 a 2^16-1
0 a 2^32-1
0 a 2^32-1
Operacin
Visualiza el tipo de dato x
Determina si x es un tipo de dato numrico
Determina si x es del tipo numrico especificado
Determina si x es del tipo numrico especificado
Determina si x es del tipo numrico especificado
Determina si x es del tipo numrico especificado
Determina si x es del tipo numrico especificado
Determina si x es nmero real o complejo
Determina si x no es numero (NaN)
Determina si x es infinito
Determina si x es finito
Curso: Computacin II
Ciclo: III
Semana 03 y 04
x = 3.4286 0.0000
x = 3.4286e+000 9.6569e-006
x =3.4286 9.6569e-006
x =3.428571428571428 0.000009656896000
x =3.428571428571428e+000 9.656896000000000e-006
Curso: Computacin II
Ciclo: III
Semana 03 y 04
10
>> x
x =3.42857142857143
9.656896e-006
x =3.43
0.00
x =24/7
1/103553
1/103553
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 carcter.
3.1. Creacin de una cadena de caracteres (arreglo de caracteres de una dimensin)
Se especifica el dato carcter ubicando a los caracteres dentro de un par de comillas
simples.
Ejemplo:
>> curso='computacion II'
curso = computacion II
>> whos curso
Name
Size
Curso: Computacin II
Ciclo: III
curso
Semana 03 y 04
1x14
11
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 funcin de concatenacin strcat o el operando de concatenacin MATLAB[], permite unir
2 o ms caracteres generando un nuevo arreglo de caracteres.
>> Curso='computacion II de la escuela profesional de mecnica elctrica';
>> Universidad='SAN PEDRO';
>> strcat(universidad, ',', curso)
ciudades =
Doc. Ing. Suxe Ramrez Alicia
Curso: Computacin II
Ciclo: III
Semana 03 y 04
12
chimbote
trujillo
Chiclayo
Cuando creamos arreglos de caracteres desde cadenas de diferentes tamaos, se debe
rellenar las cadenas ms cortas con espacio en blanco para forzar a que las filas sean de la
misma longitud.
Ejemplo:
>> escuelas=['informatica';'mecanica '; 'industrial ';'agronomia ']
escuelas =
Informtica
Mecnica
Industrial
Agronoma
Una funcin simple de crear cadenas de arrglo usando la funcin char. Char
automticamente rellena todas las cadenas a la longitud de la cadena de entrada ms
larga.
Distritos=char(Chimbote, nuevo Chimbote)
Distritos =
Chimbote
Nuevo Chimbote
La funcin deblank permite extraer una o ms cadenas de un arreglo.
>> Distritos=char('Chimbote', 'nuevo Chimbote', 'lince', 'los olivos')
Distritos =
Curso: Computacin II
Ciclo: III
Semana 03 y 04
13
Chimbote
Nuevo Chimbote
Lince
Los olivos
>> Distritos=deblank(distritos(1,:))
Distritos =
Chimbote
La funcin deblank tambin permite remover los espacios en blanco.
>> A{1,1}= 'MATLAB ';
>> A{1,2}= 'SIMULINK ';
>> A=deblank (A)
A = 'MATLAB' 'SIMULINK'
3.3. Comparacin de cadenas.
Se pueden comparar cadenas utilizando funciones u operaciones.
a. Comparacin con funciones.
Funcin
Descripcin
Strcmp
Strncmp
Strcmpi
strncmpi
Curso: Computacin II
Ciclo: III
Semana 03 y 04
14
respectivos caracteres.
>> a='Gavidia';
>> b='Gambini';
>> a==b
ans = 1
x=0
y=0
posicion =9
Curso: Computacin II
Ciclo: III
Semana 03 y 04
15
Strmatch busca a travs de las filas de un arreglo de cadenas para encontrar las
cadenas que empiecen con la serie de caracteres dada. Esta funcin 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 opcin 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. Evaluacin de cadenas: funcin EVAL.
Eval: evalua una cadena que contiene una expresin MATLAB, sentencia o llamada a
funcin, su sintaxis es:eval(string).
>> x=[1:8];
>> y=eval('(x+2)./x')
y=
Columns 1 through 6
Columns 7 through 8
1.2857 1.2500
>> cadena1='sin(x*(pi/2))';
Doc. Ing. Suxe Ramrez Alicia
Curso: Computacin II
Ciclo: III
Semana 03 y 04
16
>> z=eval(cadena1)
z=
Columns 1 through 6
Columns 7 through 8
-1.0000 -0.0000
Size
Bytes Class
cadena1
1x13
26 char
1x8
64 double
1x8
64 double
Attributes
Operacin
Convierte un entero positivo a su equivalente carcter (cdigo
UNICODE). Trunca cualquier parte fraccional.
Int2str
Num2str
Mat2str
Dec2hex
Curso: Computacin II
Ciclo: III
Semana 03 y 04
17
hexadecimal.
Dec2bin
Dec2base
Ejemplo:
1. Convertir cada valor numrico 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
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
carcter. Utilice los comandos int2str y num2str, es decir:
>> int2str([-85 78 -73 77 -65 83 -84 69 82])
Curso: Computacin II
Ciclo: III
Semana 03 y 04
18
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 numrico x=4.756 a un tipo de cadena de caracteres.
>> x=4.756;
>> y=num2str(x)
y=
4.756
Size
cadena1
Bytes Class
1x13
Attributes
26 char
1x1
8 double
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]
Curso: Computacin II
Ciclo: III
Semana 03 y 04
19
Operacin
uintN
Str2num
Str2double
Similar a strnum, pero ofrece una mayor calidad o trabajo con arreglos
de cadenas.
Hex2num
Hex2dec
Bin2dec
Bese2dec
5. ESTRUCTURAS.
Curso: Computacin II
Ciclo: III