Você está na página 1de 10

02 ARRAYS Lic.

Amado Malca Villalobos


1

II. ARRAYS

Un arrays es simplemente un arreglo rectangular de nmeros, que puede ser unidimensional (Vector) o
multidimensional (Matriz).
( )
i j
m n
A a

=
Los arrays tambin pueden estar compuestos por caracteres no numricos, llamados cadenas o strings.

Creacin de arrays unidimensionales (Vectores)
Un vector se puede entender como un conjunto de datos, que se pueden ordenarse en forma de fila o columna.
Tambin pueden ser el resultado de alguna funcin que determine el valor de este vector.
Por ejemplo:
Un conjunto de puntos:
( ) 1 2, 6 p =

( ) 2 3,9 p =

( ) 3 4,14 p =

( ) 4 5, 21 p =

( ) 5 6,30 p =

( ) 6 7, 41 p =
, Originan dos
vectores, uno para las abscisas y otro para las ordenadas.
En la siguiente tabla se muestran datos sobre crecimiento demogrfico:
Datos demogrficos
Ao 1984 1986 1988 1990 1992 1994 1996
Poblacin
(Millones)
127 130 136 145 158 178 211
Esta tabla tambin puede originar dos vectores, que pueden ser en forma de filas (horizontal), o columnas
(vertical).

Creacin de un vector a partir de una lista de nmeros conocidos
Para crear un vector solo se necesita teclear los elementos dentro de dos corchetes [ ].
_ var [ ] nombre iable elementos del vector =

Sintaxis Descripcion
u=[7 3 6 4 9] Vector fila
u=[7,3,6,4,9] Vector fila
v=[7;1;5;9;12] Vector columna
v=[7,1,5,9,12] Vector columna
v=[7 3 6 4 9] Vector columna
V=[7
1
5
9
12]
Vector columna. Se ingresa un elemento y se
presiona la tecla enter, se ingresa el siguiente
valor luego enter, . . ., todo ello entre los dos
corchetes.

En el primer ejemplo tenemos:
>> abscisa=[2 3 4 5 6 7]
abscisa = 2 3 4 5 6 7
>> ordenada=[6 9 4 14 21 30 41]
ordenada = 6 9 4 14 21 30 41
>>
Ahora con los datos demograficos
>> fechas=[1984;1986;1988;1990;1992;1994;1996]
fechas =
1984
1986
1988
1990
1992
1994
1996
>> Poblacion=[127;130;136;145;158;178;211]
Poblacion =
127
130
136
145
158
02 ARRAYS Lic. Amado Malca Villalobos
2
178
211
>>

Creacin de un vector con distancia constante
Aqu las datos son el valor inicial y el final, adems el incremento (distancia). En un vector con distancia o
espaciado constante, la diferencia entre los elementos siempre es la misma. Su estructura matemtica es:
[ 2 3 ... ] v a a r a r a r b = + + + , Donde
( ) 1 b a r n = +
As podemos ver que es un vector donde el primer elemento es a , el espacio o distancia es r , y el ltimo
trmino es b , se crea con la siguiente sintaxis:
_ var [ : : ] nombre iable a r b =
_ var : : nombre iable a r b =
Si no se indica el valor de r, por defecto es 1.
_ var : nombre iable a b =

Ejemplos:
>> x=[4:17:81]
x = 4 21 38 55 72
>> x=[4:17:89]
x = 4 21 38 55 72 89
>> x=[4:9]
x = 4 5 6 7 8 9
>> x=[12:-3:-20]
x = 12 9 6 3 0 -3 -6 -9 -12 -15 -18
>> x=[8:-3:20]
x = Empty matrix: 1-by-0
>>

Creacin de vectores de una longitud definida
Si se necesita crear un vector donde se conoce el primer y el ltimo elemento, asi como el numero de trminos.
Para ello se usa el comando linspace, cuya sintaxis es:
_ var ( , , ) nombre iable linspace a b n =
_ var ( , ) nombre iable linspace a b =
Se crea un vector de n elementos, que empieza en a y termina en b. y que estn equiespaciados. Donde la
distancia entre elemento y elemento esta dado por:
1
b a
r
n

.
Si no se indica el valor de n, por defecto es 100.

>> v1=linspace(4,20,8)
v1 = 4.0000 6.2857 8.5714 10.8571 13.1429 15.4286 17.7143 20.0000
>> v2=linspace(4,20,9)
V2 = 4 6 8 10 12 14 16 18 20
>> v3=linspace(4,20,-9)
v3 = 20
>> v4=linspace(3.5,-20.5)
v4 = Columns 1 through 4 Columns 97 through 100
3.5000 3.2576 3.0152 20.0152 -20.2576 -20.5000
>>

CREACION DE ARRAY BIDIMENSIONALES (MATRICES)

En este caso los nmeros se distribuyen en filas (horizontal) y columnas (vertical). Son utilizadas en el Algebra
Lineal, y se usan para linealizar los problemas, es decir para suavizarlos.
Los elementos de una matriz se ingresan fila por fila, separados por punto y coma. Tambin se pueden separar
las filas por un enter.
_ var [ _ ; _ ;.......; _ ] nombre iable fila uno fila dos ultima fila =
02 ARRAYS Lic. Amado Malca Villalobos
3
_ var [ _
_
....
_ ]
nombre iable fila uno
fila dos
ultima fila
=


Considere la matriz A de tres filas y cuatro columnas:
5 8 4 3
5 2 1 0
6 9 2 5
A
| |
|
=
|
|

\ .


>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A =
6 8 -4 3
5 2 1 0
6 9 2 -5
>> A=[6 8 -4 3
5 2 1 0
6 9 2 -5]
A =
6 8 -4 3
5 2 1 0
6 9 2 -5
>> A=[6 8 -4 3,5 2 1 0,6 9 2 -5]
A = 6 8 -4 3 5 2 1 0 6 9 2 -5
>> a=8;b=sqrt(5);m=exp(3);p=pi;
>> D=[a+b b+m p+a+b;m+log(8) 2*a+7*b sin(pi/2)]
D = 10.2361 22.3216 13.3777
22.1650 31.6525 1.0000
>>

Tambin una matriz se puede crear fila por fila con el comando linspace y el operador dos puntos, ya descritos
anteriormente.

>> D=[linspace(3,11,5);2 7 2 5 7;linspace(1,6,5)]
D = 3.0000 5.0000 7.0000 9.0000 11.0000
2.0000 7.0000 2.0000 5.0000 7.0000
1.0000 2.2500 3.5000 4.7500 6.0000
>> D=[linspace(8,-8,5);2:7:35;linspace(11,16,5);5:-2:-4]
D = 8.0000 4.0000 0 -4.0000 -8.0000
2.0000 9.0000 16.0000 23.0000 30.0000
11.0000 12.2500 13.5000 14.7500 16.0000
5.0000 3.0000 1.0000 -1.0000 -3.0000
>>

Creacin de matrices bsicas
En el momento de la programacin, es necesario inicializar la o las variables con algn valor inicial, que por lo
general es 1 0. Para ello necesitaremos la creacin de algunos arrays con estos nmeros.

Comando Descripcion
A=zeros(m,n) Crea una matriz de orden m n , con ceros
B=zeros(n) Crea una matriz de orden n n , con ceros
C=ones(m,n) Crea una matriz de orden m n , con unos
D=ones(n) Crea una matriz de orden n n , con unos
E=eye(n) Crea la matriz de orden n n , con unos en la
diagonal, y ceros en el resto de lugares
F=eye(m,n) Crea la matriz de orden m n , con unos en
la diagonal principal, y ceros en el resto

>> A=zeros(2,3)
02 ARRAYS Lic. Amado Malca Villalobos
4
A = 0 0 0
0 0 0
>> A=zeros(2)
A = 0 0
0 0
>> B=eye(3,5)
B = 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
>> D=ones(3,5)
D = 1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
>>

El operador transposicin
El operador transposicin, cuando se aplica a un array, transforma la fila en columna y viceversa. El comando se
expresa solo con una comilla simple: ' (alt 39)
Ademas tiene las siguientes propiedades:
( )' ' ' A B A B + = +

( )' ' ' A B A B =

( )' ' ' AB B A =


>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A = 6 8 -4 3
5 2 1 0
6 9 2 -5
>> A'
ans = 6 5 6
8 2 9
-4 1 2
3 0 -5
>>

Manipulacin de Arrays
A veces se hace necesario la extraccin, cambio o reduccin de trminos de un array. Tambin a veces se
necesita agregar elementos a estos arreglos.

Vectores
>> v1=[6 8 -4 3 2 1 0 9 2 -5]
v1 = 6 8 -4 3 2 1 0 9 2 -5
>>

Reasignando valores
>> v1(6)
ans = 1
>> v1(6)=12
v1 = 6 8 -4 3 2 12 0 9 2 -5
>> v1(3)+5*v1(7)-6*v1(2)
ans = -52
>> 8*v1(2)+7*v1(5)-(v1(7)+2)^2
ans = 74
>>

Matrices
Al igual que en el caso de vectores se tiene las mismas inquietudes. para ello hay que tener en cuenta que, si A
es una matriz de orden m n , entonces se tienen las siguientes opciones para los elementos de tal matriz:
( )
i j
m n
A a

=
matriz de orden m n
( ) , A i j
elemento de A, ubicado en la fila i y columna j.
( ) A k k-esimo elemento deA

>> A=[6 8 -4 3;5 2 1 0;6 9 2 -5]
A = 6 8 -4 3
02 ARRAYS Lic. Amado Malca Villalobos
5
5 2 1 0
6 9 2 -5
>> A(2,3)
ans = 1
>> A(9)
ans = 2
>> A(10)
ans = 3
>> A(3,4)
ans = -5
>> A(3),A(9),A(11),A(3)+6*A(9)-8*A(11)
ans = 6
ans = 2
ans = 0
ans = 18
>>


Utilizacin de dos puntos en la manipulacin de arrays
El operador dos puntos genera un rango de nmeros, en un array.
En vectores
Expresin Descripcion
( ) : v
Indica todos los elementos del vector v.
( ) : v m n
Indica los elementos del vector, desde la
posicin m hasta la posicin n.
( ) : : v m k n
Indica los elementos del vector, desde la
posicin m hasta la posicin n, con un
incremento k.

>> u=[6 8 -4 3 2 1 0 9 2 -5]
u = 6 8 -4 3 2 1 0 9 2 -5
>> u(:)
ans = 6
8
-4
3
2
1
0
9
2
-5
>> u(3:7)
ans = -4 3 2 1 0
>> u(1:2:10)
ans = 6 -4 2 0 2
>> u(9:-1:1)
ans = 2 9 0 1 2 3 -4 8 6
>>

En Matrices
Expresin Descripcion
( ) :, A n
Indica todos los elementos de la columna n
( ) ,: A m
Indica todos los elementos de la fila m
( ) :, : A m n
Indica los elementos de las columnas m hasta la n.
( ) : ,: A m n
Indica los elementos de las filas m hasta la n.
( ) : , : A m n p q
Indica los elementos de las filas m hasta la n, y las
columnas desde la p hasta la q.

>> A=[6 8 -4 3 6 1;5 2 1 0 9 8;6 9 2 -5 7 0;4 8 12 3 9 2]
02 ARRAYS Lic. Amado Malca Villalobos
6
A = 6 8 -4 3 6 1
5 2 1 0 9 8
6 9 2 -5 7 0
4 8 12 3 9 2
>> A(:,6)
ans = 1
8
0
2
>> A(3,:)
ans = 6 9 2 -5 7 0
>> A(2:3,3:6)
ans = 1 0 9 8
2 -5 7 0
>> A(2:3,6:-1:1)
ans = 8 9 0 1 2 5
0 7 -5 2 9 6
>> A,B=A([1,4],[2,4,5])
A =
6 8 -4 3 6 1
5 2 1 0 9 8
6 9 2 -5 7 0
4 8 12 3 9 2
B = 8 3 6
8 3 9
>>

Adicin de nuevos elementos a variables ya creadas
En un array que ya ha sido creado se pueden agregar o modificar elementos, con solamente asignar un valor.

En vectores
>> u=[6 8 -4 3 2 ]
u = 6 8 -4 3 2
>> u(8)=12
u = 6 8 -4 3 2 0 0 12
>> u(3)=42
u = 6 8 42 3 2 0 0 12
>> u(3:7)=2*u(3:7)
u = 6 8 84 6 4 0 0 12
>> u(3:7)=-4*u(3:7)
u = 6 8 -336 -24 -16 0 0 12
>> w(7)=15
w = 0 0 0 0 0 0 15
>> w(1:6)=1:6
w = 1 2 3 4 5 6 15
>> v=[u w]
v = 6 8 -336 -24 -16 0 0 12 1 2 3 4 5 6 15
>>

En matrices
>> A=[6 8 3 6;5 1 0 9;6 9 7 8]
A =
6 8 3 6
5 1 0 9
6 9 7 8
>> A(4,5)=60
A =
6 8 3 6 0
5 1 0 9 0
6 9 7 8 0
0 0 0 0 60
>> A(:,5)=20:10:50
A =
02 ARRAYS Lic. Amado Malca Villalobos
7
6 8 3 6 20
5 1 0 9 30
6 9 7 8 40
0 0 0 0 50
>> A(4,:)=17:10:57
A =
6 8 3 6 20
5 1 0 9 30
6 9 7 8 40
17 27 37 47 57
>> D=eye(4)
D =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
>> E=[A D]
E =
6 8 3 6 20 1 0 0 0
5 1 0 9 30 0 1 0 0
6 9 7 8 40 0 0 1 0
17 27 37 47 57 0 0 0 1
>> E(:,5)=ones(4,1)
E =
6 8 3 6 1 1 0 0 0
5 1 0 9 1 0 1 0 0
6 9 7 8 1 0 0 1 0
17 27 37 47 1 0 0 0 1
>>

Eliminacin de elementos
Para eliminar filas y/o columnas en un array, solo hay que asignarle un array vacio: [ ]

>> p=[6 8 -4 3 2]
p = 6 8 -4 3 2
>> p(3)=[]
p = 6 8 3 2
>> p(1)=[]
p = 8 3 2
>>

>> G=[16 82 31 16;55 77 40 90;66 23 56 84]
G = 16 82 31 16
55 77 40 90
66 23 56 84
>> G(:,2)=[]
G = 16 31 16
55 40 90
66 56 84
>> G(1,:)=[]
G = 55 40 90
66 56 84
>>

FUNCIONES PARA LA MANIPULACION DE ARRAYS
Existe una gran variedad de funciones en MatLab, para cada cometido. Estas se pueden hallar en la ventana de
ayuda del MatLab.
Funcin Descripcin Ejemplo
( ) length v

Devuelve el nmero de
elementos del vector v.
>> v=[6 8 -4 3 2]
v = 6 8 -4 3 2
>> length(v)
ans = 5
>> w=[]
w = []
02 ARRAYS Lic. Amado Malca Villalobos
8
>> length(w)
ans = 0
( ) length A

Devuelve el valor mximo
de {m,n}, siendo m n
el orden de la matriz A.
>> A=[6 8; 3 6;5 1]
A = 6 8
3 6
5 1
>> length(A)
ans = 3
( ) size A

Devuelve un vector fila
[m,n], donde m y n
representan el tamao de la
matriz A
>> A
A = 6 8
3 6
5 1
>> size(A)
ans = 3 2
( ) , , reshape A m n

Reordena una matriz A, de
orden r s a una de
orden m n . Siempre que
r s m n =
>> A
A = 6 8
3 6
5 1
0 9
>> reshape(A,2,4)
ans = 6 5 8 1
3 0 6 9
( ) diag v

Si v es un vector, se crea
una matriz cuadrada con
los elementos de v en la
diagonal
>> v=[6 8 2]
v = 6 8 2
>> diag(v)
ans =
6 0 0
0 8 0
0 0 2
( ) diag A

Si A es una matriz, se crea
un vector a partir de los
elementos de la diagonal
de A
>> A=[120 56 80 78;13 450
67 45;89 56 610 56]
A = 120 56 80 78
13 450 67 45
89 56 610 56
>> diag(A)
ans = 120
450
610


Variables en Memoria
Para visualizar las variables que aun estn en memoria, cuando se est ejecutando MatLab, se usa el comando
who.
Tambin tenemos el comando whos , que adems de lo anterior visualiza el tamao, bytes y clase de las variables actuales en la memoria.

>> who
Your variables are:
A B D E G ans p u v w
>> whos
Name Size Bytes Class Attributes
A 3x4 96 double
B 2x3 48 double
D 4x4 128 double
E 4x8 256 double
G 2x3 48 double
ans 3x1 24 double
p 1x2 16 double
u 1x5 40 double
v 1x3 24 double
w 0x0 0 double
>>

Problemas de aplicacin
Problema 2.1: Creacin de una matriz
Crear una matriz de orden 4 5 , en la cual las primeras dos filas sean ceros y las dos siguientes sean unos.
Solucin:

>> F=zeros(2,5)
F = 0 0 0 0 0
0 0 0 0 0
>> G=ones(2,5)
G = 1 1 1 1 1
1 1 1 1 1
>> H=[F; G]
H = 0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
02 ARRAYS Lic. Amado Malca Villalobos
9
1 1 1 1 1
>>
Tambin puede hacerse as:
>> K(1:2,:)=zeros(2,5)
K =
0 0 0 0 0
0 0 0 0 0
>> K(3:4,:)=ones(2,5)
K =
0 0 0 0 0
0 0 0 0 0
1 1 1 1 1
1 1 1 1 1
>>
Problema 2.2: Creacin de una matriz
Crear una matriz 6 6 en la cual las dos filas centrales, junto con las dos columnas centrales, sean uno, siendo el resto de elementos ceros.
Solucin:

>> D=zeros(6,6)
D =
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
>> D(3:4,:)=ones(2,6)
D =
0 0 0 0 0 0
0 0 0 0 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 0 0 0 0
0 0 0 0 0 0
>> D(:,3:4)=ones(6,2)
D =
0 0 1 1 0 0
0 0 1 1 0 0
1 1 1 1 1 1
1 1 1 1 1 1
0 0 1 1 0 0
0 0 1 1 0 0

Problema 2.3: Manipulacin de matrices
Sean dos matrices, una A de tamao 5 6 , y otra B de tamao 3 5 . Sea tambin un vector v de longitud 9.
2 5 8 11 14 17
3 6 9 12 15 18
4 7 10 13 16 19
5 8 11 14 17 20
6 9 12 15 18 21
A
| |
|
|
| =
|
|
|
\ .

5 10 15 20 25 30
30 35 40 45 50 55
55 60 65 70 75 80
B
| |
|
=
|
|
\ .

( ) 99 98 97 96 95 94 93 92 91 v =

Y luego con un solo comando que remplace:
a) Las cuatro ltimas columnas de las filas 1 y 3 de A por las cuatro primeras columnas de las primeras dos filas de la matriz B.
b) Las cuatro ltimas columnas de la cuarta fila de A por los elementos 5 a 8 de v.
c) Las cuatro ltimas columnas de la quinta fila de A por las columnas 3 a 5 de la tercera fila de B.
Solucin:
Datos Cambios con tres comandos
>>A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21]
A =
2 5 8 11 14 17
3 6 9 12 15 18
4 7 10 13 16 19
5 8 11 14 17 20
6 9 12 15 18 21
>> B=[5:5:30;30:5:55;55:5:80]
B =
5 10 15 20 25 30
30 35 40 45 50 55
55 60 65 70 75 80
>> v=[99:-1:91]
v = 99 98 97 96 95 94 93 92 91

>>A([1 3],[3 4 5 6])=B([1 2],[1 2 3 4])
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 11 14 17 20
6 9 12 15 18 21
>> A(4,[3:6])=v([5:8])
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 12 15 18 21
>> A(5,[3:6])=B(3,[2:5])
A =
2 5 5 10 15 20
02 ARRAYS Lic. Amado Malca Villalobos
10
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75
>>

Datos Con un solo comando
>> A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21];
>> B=[5:5:30;30:5:55;55:5:80];
>> v=[99:-1:91];

>> A([1 3 4 5],[3:6])=[B([1
2],[1:4]);v([5:8]);B(3,[2:5])]
A =
2 5 5 10 15 20
3 6 9 12 15 18
4 7 30 35 40 45
5 8 95 94 93 92
6 9 60 65 70 75



Cadenas de caracteres y variables de tipo string
Una cadena o string es simplemente un array de caracteres. Para crear una cadena solo es necesario teclear los
caracteres que la formen entre comillas simples.
No se incluye la letra ee y los acentos.

>> M=['calculo' 'ad hoc' '%&$j']
M =calcuload hoc%&$j
>> M=['calculo';'ad hoc';'% & $ j']
M =
calculo
ad hoc
% & $ j
>> N=['geo','$5437','? PO']
N =geo$5437? PO
>> N=['geofi','$5437','? PO']
N =geofi$5437? PO
>>

Você também pode gostar