Sunteți pe pagina 1din 16

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
02 ARRAYS Lic. Amado Malca Villalobos
2
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
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 = +
02 ARRAYS Lic. Amado Malca Villalobos
3
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
02 ARRAYS Lic. Amado Malca Villalobos
4
>> 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 =

_ 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
02 ARRAYS Lic. Amado Malca Villalobos
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)
A = 0 0 0
0 0 0
02 ARRAYS Lic. Amado Malca Villalobos
6
>> 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 =

( )
' ' ' A B 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
>>

02 ARRAYS Lic. Amado Malca Villalobos
7
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
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
>>


02 ARRAYS Lic. Amado Malca Villalobos
8
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.
02 ARRAYS Lic. Amado Malca Villalobos
9
( )
: , : 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]
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
02 ARRAYS Lic. Amado Malca Villalobos
10
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 =
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
02 ARRAYS Lic. Amado Malca Villalobos
11
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
>>

02 ARRAYS Lic. Amado Malca Villalobos
12
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 = []
>> 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


02 ARRAYS Lic. Amado Malca Villalobos
13
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
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
02 ARRAYS Lic. Amado Malca Villalobos
14
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.
02 ARRAYS Lic. Amado Malca Villalobos
15
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
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












02 ARRAYS Lic. Amado Malca Villalobos
16
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
>>

S-ar putea să vă placă și