Matrices
Una matriz A de m filas y n columnas o de dimensión m×n se representa por
Para acceder a un elemento situado en la fila i y en la columna j, Aij, se escribe A(i,j). La función size devuelve dos números que corresponden a las dimensiones de la matriz.
La matriz traspuesta A' de la matriz A consiste en intercambiar filas por columnas: La primera columna de la matriz A es la primera fila de la matriz traspuesta A', la segunda columna de la matriz A se convierte en segunda fila de la matriz A', y así sucesivamente. La dimensión de la matriz tarspuesta A' es n×m, es decir n filas y m columnas
Creación de una matriz
Se crea una matriz de 3×2, y asignar a la variable
>> A=[1 2 3 4 5 6]; >> A=[1 2 3; 4 5 6] A = 1 2 3 4 5 6 >> A(2,2) %accede al elemento situado en la fila 2 columna 2 ans = 5 >> size(A) %dimensiones de la matriz A (2 filas, 3 columnas) ans = 2 3 >> B=A' % B es la matriz traspuesta de A B = 1 4 2 5 3 6 >> size(B) ans = 3 2
La función size se utiliza para obtener las dimensiones de una matriz, mientras que la función
Haciendo doble-clic en en nombre de la variable
Creamos matrices a partir de vectores o a partir de otras matrices
>> x1=[1,2,3]; %vectores fila >> x2=[4,5,6]; >> A=[x1;x2] A = 1 2 3 4 5 6 >> x1=[1;2;3]; %vectores columna >> x2=[4;5;6]; >> A=[x1,x2] A = 1 4 2 5 3 6 >> X=[1,2,3;4,5,6] X = 1 2 3 4 5 6 >> Y=[7,8,9;10,11,12;13,14,15] Y = 7 8 9 10 11 12 13 14 15 >> A=[X;Y] A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
La funcion
>> A=[1,2;3,4] A = 1 2 3 4 >> B=repmat(A,3,2) B = 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4 1 2 1 2 3 4 3 4
La función
>> [U,V]=meshgrid(1:4,5:7) U = 1 2 3 4 1 2 3 4 1 2 3 4 V = 5 5 5 5 6 6 6 6 7 7 7 7
Las matrices
>> U=repmat(1:4,3,1) U = 1 2 3 4 1 2 3 4 1 2 3 4 >> V=repmat((5:7)',1,4) V = 5 5 5 5 6 6 6 6 7 7 7 7
Vamos a crear la siguiente matriz cuadrada de dimensión N=4
>> [I,J]=meshgrid(1:4); >> X=1./(I+J-1) X = 1.0000 0.5000 0.3333 0.2500 0.5000 0.3333 0.2500 0.2000 0.3333 0.2500 0.2000 0.1667 0.2500 0.2000 0.1667 0.1429
La función
Una matriz se puede convertir en un vector columna
>> A=[1,2,3;4,5,6]; >> X=A(:) X = 1 4 2 5 3 6
Un vector se puede convertir en una matriz diagonal mediante
>> x=[1,2,3]; >> A=diag(x) A = 1 0 0 0 2 0 0 0 3
Creamos una matriz de 3×4 con números enteros aleatorios comprendidos entre -10 y 10
>> A=randi([-10,10],3,4) A = 4 -2 4 -10 5 3 -10 -8 5 -7 -5 7
Estos doce valores los reorganizamos en una matriz de 2 filas y 6 columnas, mediante la función
>> reshape(A,2,6) ans = 4 5 3 4 -5 -8 5 -2 -7 -10 -10 7
La función
>> flipud(A) ans = 5 -7 -5 7 5 3 -10 -8 4 -2 4 -10
La función
>> fliplr(A) ans = -10 4 -2 4 -8 -10 3 5 7 -5 -7 5
Matrices predefinidas
- La función
zeros(m,n) crea una matriz de dimensión m×n cuyos elementos son todos ceros - La función
ones(m,n) crea una matriz de dimensión m×n cuyos elementos son todos unos - La función
eye(n) crea una matriz cuadrada de dimensión n×n en la cual, los elementos de la diagonal son unos y el resto de los elementos son ceros, es decir, crea la matriz identidad de dimensión n.
Por ejemplo,
>> y=zeros(3) y = 0 0 0 0 0 0 0 0 0 >> y=zeros(3,1) y = 0 0 0 >> eye(3) ans = 1 0 0 0 1 0 0 0 1
>> v=[3,-1,0,1,2]; >> diag(v) ans = 3 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 2
>> diag(v,1) ans = 0 3 0 0 0 0 0 0 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 2 0 0 0 0 0 0
Vamos a crear la matriz
>> D=diag(4*ones(1,5))+diag(-1*ones(1,5-1),1)+diag(-1*ones(1,5-1),-1) D = 4 -1 0 0 0 -1 4 -1 0 0 0 -1 4 -1 0 0 0 -1 4 -1 0 0 0 -1 4
>> diag(D) ans = 4 4 4 4 4 >> diag(D,-1) ans = -1 -1 -1 -1 >> diag(D,2) ans = 0 0 0
Acceso a los elementos de una matriz
Existen también varias formas de acceder a más de un elemento de una matriz mediante el operador dos puntos :. Sea la matriz
A(:,2) se accede a todos los elementos de la columna 2A(:,end) se accede a todos los elementos de la última columnaA(3,:) se accede a todos los elementos de la fila 3A(:,2:4) se accede a todos los elementos de las columnas 2, 3 y 4A(2:4,:) se accede a todos los elementos de las filas 2, 3 y 4A(1:3,2:4) se refiere a la submatriz de filas 1, 2 y 3 y de columnas 2, 3 y 4
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16] A = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >> A(:,2) ans = 2 6 10 14 >> A(3,:) ans = 9 10 11 12 >> A(:,2:4) ans = 2 3 4 6 7 8 10 11 12 14 15 16 >> A(2:4,:) ans = 5 6 7 8 9 10 11 12 13 14 15 16 >> A(1:3,2:4) ans = 2 3 4 6 7 8 10 11 12
Para acceder a los elementos de la matriz sombreados en la figura escribiremos
>> A=[1,2,3,4;5,6,7,8;9,10,11,12]; >> A([1,2],3) ans = 3 7 >> A(2,[2,3,4]) ans = 6 7 8 >> A([2,3],2:4) ans = 6 7 8 10 11 12
Eliminar elementos de una matriz
Se pueden eliminar elementos a una matriz
>> A=[1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16];
>> A(4,:)=[]
A =
1 2 3 4
5 6 7 8
9 10 11 12
>> A(4,:)=13:16
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Se puede crear una matriz a partir de vectores columna, por ejemplo para crear una tabla de valores (abscisa, ordenada) de una función. Se puede calcular la suma de valores, el valor máximo, mínimo, etc de cada columna, tal como lo hicimos con los vectores en la página anterior.
>> x=0:5; %vector fila >> y=3*x.^2-5; %vector fila >> tabla=[x' y'] tabla = 0 -5 1 -2 2 7 3 22 4 43 5 70 >> size(tabla) %matriz de 6 filas y 2 columnas ans = 6 2 >> max(tabla(:,2)) ans = 70 >> min(tabla(:,2)) ans = -5 >> sum(tabla(:,2)) ans = 135
Creamos una tabla de cuadrados del número entero n, n2 y de potencias de 2 elevado a la n, 2n del siguiente modo
>> n=[0:5]'; >> potencias=[n n.^2 2.^n] potencias = 0 0 1 1 1 2 2 4 4 3 9 8 4 16 16 5 25 32
En la página titulada Valores y vectores propios tendremos ocasión de practicar con matrices, vectores, extraer una matriz o un vector de otra matriz, crear una matriz a partir de vectores, etc
Ordenar los elementos de una matriz
MATLAB dispone de una función denominada
>> sort([1.65 1.82 1.72 1.75 1.73 1.85 1.90 1.74 1.76 1.77]) ans = 1.6500 1.7200 1.7300 1.7400 1.7500 1.7600 1.7700 1.8200 1.8500 1.9000
En el caso de tablas bidimensionales o multidimensionales, MATLAB dispone de la función
Día | Temperatura |
---|---|
15 | 21 |
3 | 32 |
17 | 15 |
21 | 19 |
8 | 35 |
>> a=[15 21; 3 32; 17 15; 21 19; 8 35] a = 15 21 3 32 17 15 21 19 8 35 >> sortrows(a,1) ans = 3 32 8 35 15 21 17 15 21 19 >> sortrows(a,2) ans = 17 15 21 19 15 21 3 32 8 35
Operaciones con matrices
Suma de matrices de la misma dimensión
Como ejercicio se sugiere comprobar el resultado de la suma de dos matrices
Producto de dos matrices
Se pueden multiplicar matrices de dimensiones (m, k) ×(k, n) para obtener una matriz de dimensión (m, n).
>> A=[1 2 3;4 5 6] A = 1 2 3 4 5 6 >> B=[1 2; 3 4; 5 6] B = 1 2 3 4 5 6 >> A*B ans = 22 28 49 64
El producto de un vector columa m×1 por un vector fila 1×m, del mismo número de elementos m nos da una matriz cuadrada de dimensión m×m.
Producto de un escalar por una matriz
Cuando una matriz se multiplica por un número, cada elemento de la matriz se multiplica por dicho número
La operación kA es commutativa, se obtiene el mismo resultado haciendo el producto Ak
Operaciones elemento a elemento
Existen muchas situaciones en las que se requieren operaciones elemento a elemento similares a las que se lleva a cabo con la suma o la diferencia de dos matrices de las mismas dimensiones.
>> A=[1,2,-4;7,0,5]; >> B=[-6,12,-5;-2,16,15]; >> A.*B ans = -6 24 20 -14 0 75 >> A.^2 ans = 1 4 16 49 0 25 >> A./B ans = -0.1667 0.1667 0.8000 -3.5000 0 0.3333
Ejercicios
1.-Crear estas dos matrices
- Eliminar la última fila de la primera matriz y la tercera columna de la segunda matriz
>> A=[(1:5)',zeros(5,1),(-6:2:2)'] A = 1 0 -6 2 0 -4 3 0 -2 4 0 0 5 0 2 >> B=[1:2:11;0:5:25;10:10:60;-6:2:4] B = 1 3 5 7 9 11 0 5 10 15 20 25 10 20 30 40 50 60 -6 -4 -2 0 2 4 >> A(end,:)=[] A = 1 3 5 7 9 11 0 5 10 15 20 25 10 20 30 40 50 60 >> B(:,3)=[] B = 1 3 7 9 11 0 5 15 20 25 10 20 40 50 60 -6 -4 0 2 4
2.-Crear la matriz
Nota:
>> A=1:30; >> B=reshape(A,5,6) B = 1 6 11 16 21 26 2 7 12 17 22 27 3 8 13 18 23 28 4 9 14 19 24 29 5 10 15 20 25 30 >> B([3,4,5],[4,5]) ans = 18 23 19 24 20 25 >> B(2:4,3:5) ans = 12 17 22 13 18 23 14 19 24 >> B(2:end,end) ans = 27 28 29 30 >> B(end,3:5) ans = 15 20 25
3. Sea la matriz
- Crear un vector columna de nueve elementos que contenga los elementos de la primera, tercera y cuarta columna
- Crear un vector fila de ocho elementos, que contenga los elementos de la sugunda fila y de la tercera columna
- Crear un vector fila de cinco elementos que contenga los dos últimos elementos de la última columna y los tres primeros elementos de la primera fila.
>> A=[0,2,3,4,2;-2,3,-1,5,1;0,2,-4,-3,1] A = 0 2 3 4 2 -2 3 -1 5 1 0 2 -4 -3 1 >> u=[A(:,1);A(:,3);A(:,4)] u = 0 -2 0 3 -1 -4 4 5 -3 >> u=[A(2,:),A(:,3)'] u = -2 3 -1 5 1 3 -1 -4 >> u=[A(end-1:end,end)',A(1,1:3)] u = 1 1 0 2 3
4.-Sean las matrices
Realizar las siguientes operaciones
- A*BT(el superíndice T indica traspuesta)
- AT*B
- A.*B (producto elemento a elemento)
- A./B
>> A=[1,0,-1;4,-2,-3] A = 1 0 -1 4 -2 -3 >> B=[1,-2,3;1,-1,2] B = 1 -2 3 1 -1 2 >> A*B' ans = -2 -1 -1 0 >> A'*B ans = 5 -6 11 -2 2 -4 -4 5 -9 >> A.*B ans = 1 0 -3 4 2 -6 >> A./B ans = 1.0000 0 -0.3333 4.0000 2.0000 -1.5000
5.- Sean las matrices
Comprobar si son verdaderas o falsas estas afirmaciones:
- A+(B+C)= (A+B)+C, propiedad asociativa
- 2(A+B)=2A+2B
- A*(B+C)=A*B+A*C, propiedad distributiva
- A*B=B*A, propiedad conmutativa
- (A*B)T=BT*AT
- (A*B)*C=A*(B*C)
- (A+B)T=AT+BT
6.- Simetrías respecto de eje X e Y
Queremos representar una función, que es simétrica respecto de los ejes X e Y, por lo que solamente es necesario calcularla en el primer cuadrante, puntos de color rojo en la figura
Para representar la función tenemos que obtener la matriz H
Partiendo de la matriz M
Creamos la matriz M
>> V=19:-1:0; >> M=fliplr(reshape(V,4,5)') M = 16 17 18 19 12 13 14 15 8 9 10 11 4 5 6 7 0 1 2 3
La matriz M tiene m=5 filas y n=4 columnas
>> [m,n]=size(M) m = 5 n = 4
A partir de la matriz M creamos la matriz E de m=5 filas y n=7 columnas que es la matriz por encima del eje X
>> E=zeros(m,2*n-1); >> E(1:m,n:2*n-1)=M E = 0 0 0 16 17 18 19 0 0 0 12 13 14 15 0 0 0 8 9 10 11 0 0 0 4 5 6 7 0 0 0 0 1 2 3 >> E(1:m,1:n-1)=fliplr(M(1:m,2:n)) E = 19 18 17 16 17 18 19 15 14 13 12 13 14 15 11 10 9 8 9 10 11 7 6 5 4 5 6 7 3 2 1 0 1 2 3
Creamos la matriz F formada por las 4 primeras filas y las invertimos
>> F=flipud(E(1:m-1,:)) F = 7 6 5 4 5 6 7 11 10 9 8 9 10 11 15 14 13 12 13 14 15 19 18 17 16 17 18 19
Agregamos la matriz F a la matriz E
>> H=[E;F] H = 19 18 17 16 17 18 19 15 14 13 12 13 14 15 11 10 9 8 9 10 11 7 6 5 4 5 6 7 3 2 1 0 1 2 3 7 6 5 4 5 6 7 11 10 9 8 9 10 11 15 14 13 12 13 14 15 19 18 17 16 17 18 19