Sei sulla pagina 1di 25

UNIVERSIDAD DE CALDAS

INGENIERÍA MECATRÓNICA
INFORMÁTICA 2
MATLAB: Arreglos

Tomado del Articulo de “Herramientas Computacionales para las


Matemáticas” de Veronica Borja Macías

Ing. CESAR AUGUSTO ZAPATA ARIAS

1
Matlab
Arreglos: Matrices

 Una matriz es un arreglo bidimensional, es una


sucesión de números distribuidos en filas y columnas.
 En MATLAB, una matriz se puede definir al escribir una
lista de números encerrada entre corchetes. Los
números se pueden separar mediante espacios o
comas. Las nuevas filas se indican con punto y coma.
 También se puede definir una matriz al hacer una lista
de cada fila en una línea separada, incluso no necesita
el punto y coma para la nueva línea basta con un enter.

2
Matlab
Arreglos: Matrices
Ejemplos
>> A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3 columnas
A=
1 2 3
4 5 6
>> A = [1 2 3;
4 5 6]
A=
1 2 3
4 5 6
>> A = [1 2 3
4 5 6]
A=
1 2 3
4 5 6

3
Matlab
Arreglos: Matrices

 Para acceder a los elementos individuales de una


matriz lo haremos utilizando subíndices, A(n,m) donde
n es el número de fila y m el número de columna.
Podemos indicar el último subíndice como end.
Ejemplos
>> A = [1 2 3; 4 5 6]
>>A(1,1)
ans=
1
>>A(1,end)
ans=
3
>>A(2,2)
ans=
5

4
Matlab
Arreglos: Matrices

 Si queremos que escriba toda una fila o


columna usaremos los dos puntos.
 Al igual que con los vectores podemos indicar que
escriba una serie de filas o columnas.
Ejemplos
>> A = [1 2 3; 4 5 6] ;
>> A (2,:) % escribe la segunda fila de la matriz
ans =
4 5 6
>> A (:,2) % escribe la segunda columna de la matriz
ans =
2
5

5
Matlab
Arreglos: Matrices
Ejemplos
>> A = [1 2 3; 4 5 6]
>> A (2,2:3) % escribe de la segunda fila, columnas de la 2 a la 3
ans =
5 6
>> A (2, [3 1] ) % escribe de la segunda fila de la matriz, las columnas 3 y 1
ans =
6 4
>> A ( [2 1] , 2:3) % escribe de las filas 2 y 1 , las columnas de la 2 a la 3
ans =
5 6
2 3
>> A (end, [1 3] ) % escribe de la última fila, las columnas 1 y 3
ans =
4 6

6
Matlab
Arreglos: Matrices

 Matlab tiene además otra forma de identificar cada


elemento de una matriz, de modo que podemos
acceder a un elemento de una matriz indicando sólo un
valor y no dos, pero debemos saber que el orden
elegido por MATLAB es por columnas así los elementos
de la matriz A del ejemplo anterior serían
denominados: Ejemplos
A(1) A(3) A(5) >> A = [1 2 3; 4 5 6] ;
>>A(5)%accede al elemento A(1,3)
A(2) A(4) A(6) ans=
3

7
Matlab
Arreglos: Matrices

 También es posible crear nuevas matrices a partir de


vectores o matrices ya existentes.
Ejemplos
>>A=[1 2 3 4 5] A =
1 2 3 4 5
>>B=1:2:9
B=
1 3 5 7 9
>>T = [ A; B]
T=
1 2 3 4 5
1 3 5 7 9

8
Matlab
Arreglos: Matrices

 En MATLAB, es válido tener una matriz que esté vacía.


Por ejemplo, los siguientes enunciados generarán cada
uno una matriz vacía:
Ejemplos
>>A = [ ]
>>B = 4:-1:5;

 También es posible eliminar filas o columnas mediante


la asignación del vacio [].

9
Matlab
Arreglos: Matrices

 Finalmente, usar el nombre de matriz con un solo dos


puntos, (:) transforma la matriz en una sola columna.

Ejemplos
>> M = [1 2 3 ;4 5 6 ];
>> A=M(:)
A=
1
4
2
5
3
6

10
Matlab
Arreglos: Matrices

 Podemos ampliar una matriz asignando valores a


nuevas posiciones y MATLAB llenara los espacios
restantes con ceros.

Ejemplos
>> M = [1 2 3; 4 5 6; 7 8 9];
>> M(1,5)=3
M=
1 2 3 0 3
4 5 6 0 0
7 8 9 0 0

11
Matlab
Arreglos: Matrices

Construcción abreviada de algunas matrices


zeros(n) crea una matriz cuadrada n x n de ceros. zeros(m,n) crea
una matriz m x n de ceros. ones(n) crea una matriz cuadrada n x n
de unos. ones(m,n) crea una matriz m x n de unos.
rand(n) crea una matriz cuadrada n x n de números aleatorios con
distribución uniforme (0,1).
rand(m,n) crea una matriz m x n de números aleatorios con
distribución uniforme (0,1).
randn(n) crea una matriz cuadrada n x n de números aleatorios
con distribución normal (0,1).
randn(m,n) crea una matriz m x n de números aleatorios con
distribución normal (0,1).

12
Matlab
Arreglos: Matrices

Construcción abreviada de algunas matrices


eye(n) crea una matriz cuadrada n x n de unos en la diagonal y
ceros el resto.
eye(m,n) crea una matriz m x n de unos en la diagonal y ceros el
resto.
magic(n) crea una matriz cuadrada n x n de enteros de modo que
sumen lo mismo las filas y las columnas.
hilb (n) crea una matriz cuadrada n x n de Hilbert, es decir, los
elementos (i,j) responden a la expresión (1/(i+j-1)).
invhilb(n) crea una matriz cuadrada n x n que es la inversa de la
matriz de Hilbert.

13
Matlab
Arreglos: Matrices

Ejemplos
>> zeros (3) % matriz cuadrada 3 x 3 de ceros ans =
0 0 0
0 0 0
0 0 0
>> zeros (2,5) % matriz 2 x 5 de ceros
ans =
0 0 0 0 0
0 0 0 0 0
>> ones (2,3) % matriz de unos
ans =
1 1 1
1 1 1

14
Matlab
Arreglos: Matrices

Ejemplos
>> eye(3) % matriz identidad de 3 x 3 ans =
1 0 0
0 1 0
0 0 1
>> rand(2,4) % matriz de 2 x 4 con entradas aleatorias
ans =
0.8147 0.1270 0.6324 0.2785
0.9058 0.9134 0.0975 0.5469
>> magic(3) % matriz de 3x3 cuyos renglones y columnas suman lo mismo
ans =
8 1 6
3 5 7
4 9 2
= ..
,
-.;..
. _

15
Matlab
Arreglos: Operaciones con matrices

 Podemos realizar operaciones entre matrices y


escalares, entre matrices y vectores, entre matrices y
matrices y dependiendo de la operación también es
posible operar elemento a elemento.
Expresión Operación
M+k Suma a los elementos de la matriz M el escalar k
M–k Resta a los elementos de la matriz M el escalar k
M*k Multiplicación los elementos de la matriz M por el escalar k
M/k o M./k División los elementos de la matriz M por el escalar k
k .^ M Potenciación del escalar k a cada uno de los elementos de M
M .^ k Potenciación los elementos M a la potencia escalar k

16
Matlab
Arreglos: Operaciones con matrices

Expresión Operación
M+N Suma de matrices (=)
M–N Resta de matrices (=)
M*N Multiplicación de matrices (c=r)
M .* N Multiplicación elemento a elemento (=)
M\N División de matrices por la izquierda (sol. MX = N) (=r)
M/N División de matrices por la derecha (sol. XM = N) (=c)
M/N = (M'\N')'
M ./ N División elemento a elemento por la derecha
M .\ N División elemento a elemento por la izquierda
M^k Potenciación de la matriz cuadrada M a la potencia k
M .^ N Potenciación elemento a elemento
M' Transposición compleja conjugada
M .' Transposición

17
Matlab
Arreglos: Funciones para el análisis de matrices

Funciones (Con A matriz, v vector y n número natural)


det (A) determinante
diag (v) crea una matriz diagonal con v sobre la diagonal
diag (A) extrae la diagonal de A como un vector columna
inv (A) matriz inversa
length (A) máxima dimensión
size (A) dimensiones
size (A, 1) número de renglones
size (A, 2) número de columnas
find (A) índices de las entradas de A distintas de 0
fliplr (A) voltea la matriz de izquierda a derecha
flipud (A) voltea la matriz de arriba a abajo
reshape (A,m,n) devuelve una matriz m x n cuyos elementos se toman
por columnas de A

18
Matlab
Arreglos: Funciones para el análisis de matrices

Funciones
rot90 (A) gira la matriz 90º en sentido contrario al reloj
rot90 (A,n) gira la matriz n x 90º
expm (A) exponencial matricial
logm (A) logaritmo matricial
sqrtm (A) raíz cuadrada matricial
funm (A,@función) evalúa la función en la matriz A
exp, log, sqrt… operan elemento a elemento
eig (A) valores propios
cond (A) número de condición (sensibilidad a errores en datos)
norm (A) norma
norm (A,n) norma-n
normest (A) estimación de la norma-2

19
Matlab
Arreglos: Funciones para el análisis de matrices

Funciones
null (A) espacio nulo
orth (A) ortogonalización
pinv (A) pseudoinversa
poly (A) polinomio característico
rank (A) rango
rref (A) reducción mediante la eliminación de Gauss
trace (A) traza
tril (A) matriz triangular inferior a partir de la matriz A
triu (A) matriz triangular superior a partir de la matriz A
[VE,VA] = eig (A) VE son los vectores y VA son los valores propios
[L,U] = lu (A) factorización LU
[Q,R] = qr (A) factorización QR

20
Matlab
Arreglos: Operadores relacionales con vectores y matrices
 Cuando alguno de los operadores relacionales (<, >, <=, >=, ==
y ∼=) actúa entre dos matrices del mismo tamaño, el
resultado es otra matriz de ese mismo tamaño conteniendo
unos y ceros, según los resultados de cada comparación true
o false, respectivamente.
Ejemplos
>> A=magic(3) A =
8 1 6
3 5 7
4 9 2
>> M=A>4
M=
1 0 1
0 1 1
0 1 0

21
Matlab
Arreglos: Operadores relacionales con vectores y matrices

Funciones
any(x) función vectorial; verifica si alguno de los elementos del vector x
cumple una determinada condición.
any(A) se aplica por separado a cada columna de la matriz A. El
resultado es un vector de unos y ceros
all(x) función vectorial; verifica si todos los elementos del vector x
cumplen una condición.
all(A) se aplica por separado a cada columna de la matriz A. El resultado
es un vector de unos y ceros
find(x) busca índices correspondientes a elementos de vectores que
cumplen una determinada condición. El resultado es un vector con los
índices de los elementos que cumplen la condición
find(A) cuando esta función se aplica a una matriz la considera como un
vector con una columna detrás de otra. ......
22
Matlab
Arreglos: Matrices
Ejemplos
>> A=magic(3) A =
8 1 6
3 5 7
4 9 2
>> m=find(A>4)
m=
1
5
6
7
8

23
Matlab
Arreglos: Operadores relacionales con vectores y matrices
Ejemplos
>> A(m)=10*ones(size(m)) % sustituye los elementos que cumplen la condición
A= anterior por valores de 10.
10 1 10
3 10 10
4 10 2

Funciones
isnan(A) verifica si hay valores NaN en A, devolviendo una matriz de
unos y ceros del mismo tamaño que A.
isinf(A) verifica si hay valores Inf en A, devolviendo una matriz de unos y
ceros del mismo tamaño que A.
isfinite(A) verifica si los valores de A son finitos.
isempty(A) verifica si un vector o matriz está vacío o tiene tamaño nulo.
issparse() verifica si una matriz es dispersa (sparse, es decir, con un
gran número de elementos cero).
24
Matlab
Arreglos: Matrices

Ejemplos
>> x=[1 2 3 4 0/0 6] Warning: Divide by zero x =
1 2 3 4 NaN 6
>> i=find(isnan(x))
i=
5
>> x(isnan(x))=[] % posibles formas de eliminarlo
x=
1 2 3 4 6
>> x=x(~isnan(x));
>> x=x(find(~isnan(x)));
>> A(any(isnan(A)'), :)=[] % elimina las filas de A que contienen algún NaN

= ..
,
-.;..
. _

25

Potrebbero piacerti anche