Está en la página 1de 15

02 – ARRAYS Lic.

Amado Malca Villalobos

II. ARRAYS

Un arrays es simplemente un arreglo rectangular de números, que puede ser unidimensional (Vector) o bidimensional
(Matriz).
A = ( ai j )
m �n
Los arrays también pueden estar compuestos por caracteres no numéricos, llamados cadenas o strings.

Creación de arrays unidimensionales (Vectores)


Un vector se puede entender como un conjunto de datos, que se pueden ordenarse en forma de fila o columna.
También pueden ser el resultado de alguna función que determine el valor de este vector.

Ejemplo 01: Un conjunto de puntos:


p1 = ( 2, 4) p 2 = ( 3, 9) p3 = ( 4,16) p5 = ( 6, 36) p6 = ( 7, 49)
, , , ,
Que originan dos vectores, uno para las abscisas y otro para las ordenadas.
u = [ 2 3 4 5 6 7] v = [ 4 9 16 25 36 49 ]

Ejemplo 02: En la siguiente tabla se muestran datos sobre crecimiento demográfico:


Datos demográficos
Año 1984 1986 1988 1990 1992 1994 1996
Población 127 130 136 145 158 178 211
(Millones
)
Esta tabla también puede originar dos vectores, que pueden ser en forma de filas (horizontal), o columnas (vertical).
u = [1984 1986 1988 1990 1992 1994 1996 ] v = [127 130 136 145 158 178 211]

Creación de un vector a partir de una lista de números conocidos


Para crear un vector solo se necesita teclear los elementos dentro de dos corchetes [ ].
nombre _ var 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 Vector columna. Se ingresa un elemento y se
1 presiona la tecla enter, se ingresa el siguiente
5 valor luego enter, . . ., todo ello entre los dos
9 corchetes.
12]

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 demográficos


>> fechas=[1984;1986;1988;1990;1992;1994;1996]
fechas =
1984
1986
1988
1990
1992
1994

02 Arrays 1
02 – ARRAYS Lic. Amado Malca Villalobos

1996
>> Poblacion=[127;130;136;145;158;178;211]
Poblacion =
127
130
136
145
158
178
211
>>

Creación de un vector con distancia constante


Aquí las datos son el valor inicial y el final, además el incremento (distancia). En un vector con distancia o espaciado
constante, la diferencia entre los elementos siempre es la misma. Su estructura matemática es:
v = [a a + r a + 2r a + 3r ... b]
b-a
b = a + r ( n - 1) r=
De donde (si se conoce a, r y n) n - 1 ( si se conoce a, b y n)

Así podemos ver que es un vector donde el primer elemento es a , el espacio o distancia es r , y el último término es
b , se crea con la siguiente sintaxis:
nombre _ var iable = [a : r : b]
nombre _ var iable = a : r : b
Si no se indica el valor de r, por defecto es 1.
nombre _ var 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
>>

Creación de vectores de una longitud definida


Si se necesita crear un vector donde se conoce el primer y el último elemento, así como el número de términos. Para
ello se usa el comando linspace, cuya sintaxis es:
nombre _ var iable = linspace(a, b, n)
nombre _ var iable = linspace(a, b)
Se crea un vector de n elementos, que empieza en a y termina en b. y que están equiespaciados. Donde la distancia
b-a
r=
entre elemento y elemento esta dado por: n -1 .
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

02 Arrays 2
02 – ARRAYS Lic. Amado Malca Villalobos

>>

CREACION DE UN ARRAY BIDIMENSIONALES (MATRICES)

En este caso los números 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. También se pueden separar las filas
por un enter.
nombre _ var iable = [ fila _ uno; fila _ dos;.......; ultima _ fila ]
nombre _ var iable = [ fila _ uno
fila _ dos
....
ultima _ fila ]

Ejemplo: Considere la matriz A de tres filas y cuatro columnas:


5 8 -4 3 �

� �
A=� 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
5210
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
>>

También 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
>>

Creación de matrices básicas


En el momento de la programación, es necesario inicializar la o las variables con algún valor inicial, que por lo general
es 1 ó 0. Para ello necesitaremos la creación de algunos arrays con estos números.

Comando Descripcion
A=zeros(m,n) Crea una matriz de orden m �n , con ceros

02 Arrays 3
02 – ARRAYS Lic. Amado Malca Villalobos

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
>> 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 transposición
El operador transposición, cuando se aplica a un array, transforma la fila en columna y viceversa. El comando se
expresa solo con una comilla simple: ' (alt 39)
Además tiene las siguientes propiedades:
( A ') ' = A ( A + B ) ' = A '+ B ' ( A - B ) ' = A '- B ' ( A B) ' = B ' A'
Si se tiene una matriz M cuyos elementos son complejos, entonces M ' es la transpuesta y
conjugada de M. Si se desea solo transponer la matriz M, se pueden usar M . ' , también se puede
utilizar transpose ( M )

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


A= ans =
6 8 -4 3 3.0000 - 4.0000i 4.0000 - 7.0000i
5 2 1 0 8.0000 + 6.0000i 9.0000 - 2.0000i
6 9 2 -5 >> transpose(M)
>> A' ans =
ans = 3.0000 + 4.0000i 4.0000 + 7.0000i
6 5 6 8.0000 - 6.0000i 9.0000 + 2.0000i
8 2 9
-4 1 2 >> M.'
3 0 -5 ans =
>> M=[3+4i 8-6i;4+7j 9+2i] 3.0000 + 4.0000i 4.0000 + 7.0000i
M= 8.0000 - 6.0000i 9.0000 + 2.0000i
3.0000 + 4.0000i 8.0000 - 6.0000i
4.0000 + 7.0000i 9.0000 + 2.0000i >>

02 Arrays 4
Manipulación de Arrays
A veces se hace necesario la extracción, cambio o reducción de términos de un array. También 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) % mostrando el sexto elemento del vector v1
ans = 1
>> v1(6)=12 % asignando un Nuevo valor al sexto elemento de v1
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:
A = ( ai j )
m�n 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, considerando a la matriz como un vector
Una matriz en MatLab se puede leer como si fuera de una sola columna, considerando las columnas una a continuación
de la otra. En donde la indización seria en forma de columna.

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

>> P=[21 94 16 67;85 93 75 16;90 63 52 78] % creando la matriz P de orden 3 por 4


P=
21 94 16 67
85 93 75 16
90 63 52 78
>> P(2,3),P(1,4),P(3,3),P(1,2) % mostrando algunos elementos de la matriz P
ans = 75
ans = 67
ans = 52
ans = 94
>> P(1),P(2),P(3),P(4),P(5),P(6),P(7),P(8),P(9),P(10),P(11),P(12),
ans = 21
ans = 85
ans = 90
ans = 94
ans = 93
ans = 63
ans = 16
ans = 75
ans = 52
ans = 67
ans = 16
ans = 78
>> r=1:12; % creando el índice r, que va de 1 a 12
>> P(r) % mostrando los elementos de la matriz P, vista como un vector
ans = Columns 1 through 7
21 85 90 94 93 63 16
Columns 8 through 12
75 52 67 16 78
>>

Utilización del operador “dos puntos” en la manipulación de arrays


El operador dos puntos genera un rango de números, en un array.

En vectores
Expresión Descripcion
v ( :) Indica todos los elementos del vector v.
v ( m : n) Indica los elementos del vector, desde la
posición m hasta la posición n.
v ( m : k : n) Indica los elementos del vector, desde la
posición m hasta la posición n, con un
incremento k. El valor de k puede ser
negativo, siempre que m > n

>> 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
Expresión 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 : k : n ) Indica los elementos de las columnas m hasta la n,
con un incrento k.
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]


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

Adición 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 ] % vector de 5 elementos
u = 6 8 -4 3 2
>> u(8)=12 % se añade un octavo elemento, a los intermedios se les asigna el valor cero
u = 6 8 -4 3 2 0 0 12
>> u(3)=42 % se cambia el tercer valor
u = 6 8 42 3 2 0 0 12
>> u(3:7)=2*u(3:7) % del tercero al séptimo se les duplica su valor
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 % Creación de un vector w
w = 0 0 0 0 0 0 15
>> w(1:6)=1:6 % reasignado valores a w
w = 1 2 3 4 5 6 15
>> v=[u w] % concatenando el vector u con 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
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
>>

Eliminación 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)=[] % eliminando columna dos
G = 16 31 16
55 40 90
66 56 84
>> G(1,:)=[] % eliminando fila uno
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.
Función Descripción Ejemplo
length ( v ) Devuelve el número de >> v=[6 8 -4 3 2]
elementos del vector v. v = 6 8 -4 3 2
>> length(v)
ans = 5
>> w=[]
w = []
>> length(w)
ans = 0
length ( A ) Devuelve el valor máximo >> A=[6 8; 3 6;5 1]
de {m,n}, siendo m �n A= 6 8
el orden de la matriz A. 3 6
5 1
>> length(A)
ans = 3
size ( A ) Devuelve un vector fila >> A
[m,n], donde m y n A= 6 8
representan el tamaño de la 3 6
matriz A 5 1
>> size(A)
ans = 3 2
reshape ( A, m, n ) Reordena una matriz A, de >> A
orden r �s a una de A= 6 8
orden m �n . Siempre que 3 6
r �s = m �n 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 >> v=[6 8 2]
una matriz cuadrada con v= 6 8 2
los elementos de v en la >> diag(v)
diagonal ans =
6 0 0
0 8 0
0 0 2
diag ( A ) Si A es una matriz, se crea >> A=[120 56 80 78;13 450
un vector a partir de los 67 45;89 56 610 56]
elementos de la diagonal A = 120 56 80 78
de A 13 450 67 45
89 56 610 56
>> diag(A)
ans = 120
450
610

Variables en Memoria
Para visualizar las variables que aun están en memoria, cuando se está ejecutando MatLab, se usa el comando who .
También tenemos el comando whos , que además de lo anterior visualiza el tamaño, 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 aplicación
Problema 2.1: Creación 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.
Solución:

>> 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
>>
También 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: Creación 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.
Solución:

>> 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: Manipulación de matrices


Sean dos matrices, una A de tamaño 5 �6 , y otra B de tamaño 3 �5 . Sea también un vector v de longitud 9.
�2 5 8 11 14 17 �
�3 6 9 12 15 18 �
� �
A=� 4 7 10 13 16 19 � �5 10 15 20 25 30 �
� � � �
�5 8 11 14 17 20 � B = � 30 35 40 45 50 55 �
�6 9 12 15 18 21 � �55 60 65 70 75 80 �
� � � �
v = ( 99 98 97 96 95 94 93 92 91)
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.

Solución:
Datos Cambios con tres comandos
>>A=[2:3:17;3:3:18;4:3:19;5:3:20;6:3:21] >>A([1 3],[3 4 5 6])=B([1 2],[1 2 3 4])
A= A=
2 5 8 11 14 17 2 5 5 10 15 20
3 6 9 12 15 18 3 6 9 12 15 18
4 7 10 13 16 19 4 7 30 35 40 45
5 8 11 14 17 20 5 8 11 14 17 20
6 9 12 15 18 21 6 9 12 15 18 21
>> B=[5:5:30;30:5:55;55:5:80] >> A(4,[3:6])=v([5:8])
B= A=
5 10 15 20 25 30 2 5 5 10 15 20
30 35 40 45 50 55 3 6 9 12 15 18
55 60 65 70 75 80 4 7 30 35 40 45
>> v=[99:-1:91] 5 8 95 94 93 92
v = 99 98 97 96 95 94 93 92 91 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]; >> A([1 3 4 5],[3:6])=[B([1 2],
>> B=[5:5:30;30:5:55;55:5:80]; [1:4]);v([5:8]);B(3,[2:5])]
>> v=[99:-1:91]; 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 eñe 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
>>
FUNCIONES QUE ACTÚAN SOBRE VECTORES
Las siguientes funciones actúan sobre vectores. Aquí se presentan solo algunas
funciones. Una relación completa de todas las funciones soportadas por MATLAB se
puede obtener consultando la ayuda: matlab/datafun.
length(x) devuelve la longitud del vector x
[vM,pM]=max(x) Máximo elemento de un vector. Devuelve el valor
máximo vM y la posición que ocupa pM en el vector
[vm, Mínimo elemento de un vector. Devuelve el valor
pm]=min(x) mínimo y la posición que ocupa
sum(x) suma de los elementos de un vector
cumsum(x) Devuelve el vector suma acumulativa de los
elementos de un vector. Es decir, el primer elemento
del nuevo vector es el mismo que el de x, el segundo
es la suma de los dos primeros de x, el tercero es la
suma de los tres primeros vectores de x, y así
sucesivamente
mean(x) valor medio de los elementos de un vector
std(x) desviación típica
prod(x) producto de los elementos de un vector
cumprod(x) devuelve el vector producto acumulativo de los
elementos de un vector (como en cumsum pero
respecto al producto)
[y,i]=sort(x) ordenación de menor a mayor de los elementos de un
vector x. Devuelve el vector ordenado y, y un vector i
con las posiciones iníciales en x de los elementos en

En realidad estas funciones se pueden aplicar también a matrices, pero en ese caso se
aplican por separado a cada columna de la matriz, dando como valor de retorno un
vector resultado de aplicar la función a cada columna de la matriz considerada como
vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar dichas
funciones a la matriz traspuesta.

FUNCIONES QUE ACTÚAN SOBRE MATRICES


Las siguientes funciones exigen que el/los argumento/s sean matrices. En este grupo
aparecen algunas de las funciones más útiles y potentes de MATLAB. No están todas
las que soporta MATLAB. La relación completa se puede consultar a través de la
ayuda: matlab/elmat y matlab/matfun principalmente. Se clasificaran en varios
subgrupos:
FUNCIONES MATRICIALES ELEMENTALES
A' calcula la traspuesta (conjugada) de la matriz A
A.' Calcula la traspuesta (sin conjugar) de la matriz A. Si
la matriz A es de números reales A.' y A' producen el
mismo resultado.
trace(A) devuelve la traza de la matriz cuadrada A
[m,n] = size(A) devuelve el numero de filas m y de columnas n de
una matriz rectangular A
numel(A) devuelve el número de elementos de la matriz A.

FUNCIONES MATRICIALES ESPECIALES


power(A,b) Si A= [ aij ] devuelve la matriz cuyos elementos son
b
a ij
power(b,A) Devuelve la matriz cuyos elementos son ba ij
.
exp(A) Devuelve una matriz cuyos elementos son
exp ( aij ) =e a . ij

sqrt(A) Devuelve una matriz cuyos elementos son √ aij


log(A) Devuelve una matriz cuyos elementos son ln ( a ij ) .
mpower(A,n) Devuelve la matriz A ∙ …∙ A n veces, si n es un
entero.
expm(A) Devuelve la exponencial de A; i.e. e
A

sqrtm(A) Devuelve √ A ; i.e. una matriz que multiplicada por


Los comandos A.^n y A^ n son equivalentes a las funciones power(A,n) y
powerm(A,n) respectivamente.

FUNCIONES PARA MANIPULAR MATRICES


cat(Dim,A,B) concatena las matrices A y B, i.e. las pone una junto a
la otra. Si Dim=1 B debajo de A y si Dim=2 pone B
detrás de A
reshape(A,m,n) cambia el tamaño de A a una matriz m x n
diag dependiendo del argumento se emplea para construir
una matriz diagonal o para extraer la diagonal de una
matriz
blkdiag(A,B) construye una matriz diagonal por bloques
tril(A) extrae la parte triangular inferior de A
triu(A) extrae la parte triangular superior de A
fliplr(A) Permuta las columnas de A: la ultima pasa a ser la
primera, la anteúltima pasa a ser la segunda, etc..
flipud(A) lo mismo que fliplr pero por filas
rot90(A) rota A 90 grados
[I,J,V]= find(A) Encuentra las filas y columnas donde están los
elementos no nulos de A y los almacena en I y J,
respectivamente. En V pone el vector de elementos

FUNCIONES DE AN_ALISIS MATRICIAL


n=norm(v) Norma l2 del vector v o de la matriz, si el argumento
es una matriz. Hay variantes para otras normas
n=normest(A) estimación de la norma l2 de la matriz A. Se usa
cuando el tamaño de A es muy grande y se consume
mucho tiempo en calcular norm(A)
r=rank(A) rango de la matriz A
d=det(A) determinante de A
t=trace(A) traza de A
N=null(A) las columnas de N forman una base del núcleo de A
Q=orth(A) las columnas de Q forman una base ortonormal del
espacio imagen de A
subspace1(A,B) Angulo entre los subespacios generados por las
columnas de A y B

FUNCIONES DE FACTORIZACI_ON DE MATRICES Y DE RESOLUCION DE


SISTEMAS LINEALES
/ y \ solución de sistemas lineales (ver la ayuda \help
slash")
B = inv(A) inversa de A
c = cond(A) Numero de condición de A en la norma l2. Hay una
variante para otras normas
U = chol(A) descomposición de Cholesky de una matriz definida
positiva
[L,U] = lu(A) Descomposición LU (con pivotamiento) de la matriz A.
Es decir, PA = LU, P una matriz de permutación, L
triangular inferior con 1's en la diagonal y U una
matriz triangular superior.
[Q,R]=qr(A) descomposición QR de A
d = det(A) Determinante de la matriz cuadrada A
E = rref(A) reducción a forma de escalera por _las de una matriz
rectangular A
U = chol(A) descomposición de Cholesky de una matriz definida
positiva
FUNCIONES PARA CALCULO DE VALORES PROPIOS Y SINGULARES
E=eig(A) devuelve el vector E con los valores propios de A
[U,S,V]=svd(A) descomposición de A en valores singulares: A = USV*
P=poly(X) si X es una matriz cuadrada, P es un vector cuyas
componentes son los coeficientes del polinomio
característico de X.
Si X es un vector, P es un polinomio cuyas raíces son
las componentes de X
H=hess(A) forma Hessenberg de A
[U,S]=schur(A) forma de Schur de A. U es la matriz unitaria tal que A
=USU*
[U,S]=rsf2csf(U, Transforma la forma de Schur real en la compleja. La
R) forma de Scur compleja es la habitual: una matriz
triangular superior con los valores propios
(posiblemente complejos) en la diagonal. La forma
real de Schur se refiere a una matriz real cuyos
valores propios complejos aparecen en pares
conjugados. La matriz R de la forma de Schur es real
y en ella aparecen bloques diagonales 2 x 2 asociados
a los valores propios complejos conjugados.
[U,S]=cdf2rdf(U, el reciproco del anterior. Convierte la forma diagonal

También podría gustarte