Anda di halaman 1dari 19

Universidad San Pedro

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

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)

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

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. Nmeros Decimales.

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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

Universidad San Pedro

Semana 03 y 04

1x1

8 double

>> %para verificar que un dato es decimal(o punto flotante)...


>> %se hace usop de la funcion isfloat.
>> 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 doubl.
Ejemplo:
>> y=int64 (-961258);
>> % crea un entero de 64 bits
>> x=double(y)
%convierte a doble
x=
-961258
>> whos x
Name Size
x

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 =

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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.

Creacin de datos de doble precisin


Con el tipo de dato numrico por defecto de Matlab es doble precisin, entonces se
requiere una funcin de conversin single para crear un nmero de simple precisin.
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
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

Universidad San Pedro

Semana 03 y 04

>> whos x
Name Size
x

Bytes Class

1x1

Attributes

single

2.3. Nmeros complejos.


Consisten de 2 partes separadas: una parte real y otra imaginaria. La base imaginaria es la
raz cuadrada de -1. Este es representado en Matlab por cualquiera de las dos letras: i j.

Creacin de nmeros 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 funcin 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

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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.

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
Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

Casos en que se retorna el valor NaN.


Matlab representa valores que no son nmeros reales ni complejos con un valor especial
NaN (not a Number). Expresiones como0/0 y inf/inf dan como resultado NaN, por ejemplo:
Pi
Exr(1)
Inf
NaN

Numero pi=301415926
0 a 2^16-1
0 a 2^32-1
0 a 2^32-1

2.5. Comandos que identifican el tipo de dato numrico.


Para identificar el tipo de dato de una variable x se puede usar cualquiera de las
expresiones.
Comando
Whos x
Isnumeric(x)
Isa (x, integer)
Isa(x, uint64)
Isa(x, float)
Isa(x, double)
Isa(x, single)
Isreal(x)
Isnan(x)
Isinf(x)
Isfinite(x)

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

2.6. Formato de valores numricos.


A continuacin se presenta los diferentes formatos que usa Matlab en la visualizacin de
sus variables.
Tipo
Resultado
Short
Escala el formato a 5 dgitos
Shorte
Escala el formato a 5 dgitos. Aade la e.
Shortg
El ms conveniente de los short.
Long
Escala el formato a 15 dgitos.
Long e
Escala el formato a 15 dgitos. Aade la e.
Long g
El ms conveniente de los long.
Rat
En forma de fraccin.
hex
Hexadecimal (representacin en base a 16).
Bank
Establece 2 cifras decimales
Compact
Suprime el exceso de lneas.
loose
Aade mas salidas para que la salida sea ms legible.

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

La funcin format cambia la visualizacin de los valores numricos mostrados en la ventana de


comandos. Esta configuracin solo afecta la forma en la que los nmeros 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 funcin 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


Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

10

>> 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 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

Doc. Ing. Suxe Ramrez Alicia

Bytes Class Attributes

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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)

ans = SAN PEDRO, computacin II de la escuela profesional de mecnica elctrica

Para concatenar cadenas verticalmente use strvcat


>> curso='computacin II';
>> universidad='SAN PEDRO';
>> strvcat(universidad, ',', curso)
ans =
SAN PEDRO
,
Computacin II
3.2. Creacin 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 =
Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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 =

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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

Determina si 2 cadenas son idnticas. Reconoce maysculas y minsculas.

Strncmp

Determina si los primeros n caracteres de 2 cadenas son idnticos. Reconoce


maysculas y minsculas.

Strcmpi

Determina si 2 cadenas son idnticas. No diferencia entre maysculas y


minsculas.

strncmpi

Determina si los primeros n caracteres de 2 cadenas son idnticos. No


diferencia entre maysculas y minsculas.

b. Comparacin utilizando operadores.


Se pueden utilizar los operadores relacionales de MATLAB en arreglos de caracteres,
siempre que los arreglos que estn comparando tengan iguales dimensiones o uno sea
escalar.
Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

Todos los operadores relacionales (>,>=,<,<=, ==,

14

~ =) comparan los valores de sus

respectivos caracteres.
>> a='Gavidia';
>> b='Gambini';
>> a==b
ans = 1

3.4. Comandos que identifican a un carcter.

Isletter determina si un carcter es una letra. Ejemplo:


>> ciclo='3 ciclo';
>> x=isletter(ciclo)

x=0

Isspace determina si un carcter es un espacio en blanco (blanco, tab o lnea en


blanco). Ejemplo:
>> ciclo='3 ciclo';
>> y=isspace(ciclo)

y=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 posicin inicial de una subcadena contenida a lo largo de la


cadena. Ejemplo:
>> fecha='domingo 20/04/11';
>> posicion=findstr('24', correccionfecha)

posicion =9

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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

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))';
Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

16

>> 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

cadena1

1x13

26 char

1x8

64 double

1x8

64 double

Attributes

4. CONVERSION DE VALORES NUMERICOS A CADNAS Y VICIVERSA, Y ENTRE DIFERENTES BASES.


4.1. Conversin de valores numricos a cadenas.
Comando
Chard

Operacin
Convierte un entero positivo a su equivalente carcter (cdigo
UNICODE). Trunca cualquier parte fraccional.

Int2str

Convierte un entero positivo o negativo a un tipo carcter.

Num2str

Convierte un tipo numrico a un tipo carcter de precisin y


formato especifico.

Mat2str

Convierte un tipo numrico a un tipo carcter de determinada


precisin, retornando una cadena MATLAB que puede ser
evaluada.

Dec2hex

Doc. Ing. Suxe Ramrez Alicia

Convierte un tipo numrico a un tipo carcter de base

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

17

hexadecimal.
Dec2bin

Convierte un tipo numrico a un tipo carcter de base binaria.

Dec2base

Convierte un tipo numrico a un tipo carcter de cualquier base


de 2 a 36.

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

>> 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
carcter. 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])

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Universidad San Pedro

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

>> whos x y cadena1


Name

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'

Doc. Ing. Suxe Ramrez Alicia

',' str2]

Curso: Computacin II

Ciclo: III

Universidad San Pedro

Semana 03 y 04

19

Salida = valor de x desde 65hasta 85


Si no se utilizara la funcin num2str el resultado sera valor x desde a hasta u.
4.2. Conversin de cadenas a valores numricos.
Comando

Operacin

uintN

Convierte un carcter a un cdigo entero que representa el carcter.

Str2num

Convierte un tipo carcter a un tipo numrico.

Str2double

Similar a strnum, pero ofrece una mayor calidad o trabajo con arreglos
de cadenas.

Hex2num

Convierte un tipo numrico a un tipo carcter de precisin especifica,


retornando una cadena que MATLAB puede evaluar.

Hex2dec

Convierte un tipo carcter de base hexadecimal aun entero positivo.

Bin2dec

Convierte un tipo positivo a un tipo carcter de base binaria.

Bese2dec

Convierte un entero positivo a un tipo carcter de cualquier base desde


2 hasta 36.

5. ESTRUCTURAS.

Doc. Ing. Suxe Ramrez Alicia

Curso: Computacin II

Ciclo: III

Anda mungkin juga menyukai