Beruflich Dokumente
Kultur Dokumente
Vectores
Generación de Vectores
Vector Fila
Vector Columna
Vector Transpuesto
Posiciones de un vector
Unión de vectores
Multiplicación entre vectores
Matrices
Creación de una matriz
Añadiendo filas o columnas a una matriz
Cambiar el orden de una matriz
Conversión de una matriz en un vector
Acceso a submatrices contiguas y no contiguas
Matrices vacías
Generación de tablas
Operaciones Básicas con matrices
Determinante de una Matriz
Diagonal de una matriz
Inversa de una Matriz
Funciones trascendentes matriciales
Tipos de matrices predefinidos
Generación de vectores
Se pueden generar vectores de tipo Fila o de tipo Columna. Los valores en un vector
tipo fila se ingresan separados por espacio o por comas (,) y los valores para un vector
tipo columna se ingresan separados por punto y coma (;) o por enter ( ↵ ).
Ejemplos:
» x=1:5↵ x =
1 2 3 4 5
»x = [1 10 2 4];↵
» y = 5:-1:1;↵
x=
5 4 3 2 1
No necesariamente los incrementos están dados por números enteros, también pueden
ser decimales, números negativos ó constantes.
» x=0:0.25:1↵
x=
0 0.2500 0.5000 0.7500 1.0000
» m=3.12;↵
» a=0:m:10↵
a=
0 3.12 6.24 9.36
» w = [1 2 3 4 5]↵
w=
12345
»
» z = [1;2;3;4;5]↵
z=
1
2
3
4
5
ó
» z = [1↵
2↵
3↵
4↵
5]↵
z=
1
2
3
4
5
» a=1:5↵
a=
12345
»a=a'↵ El símbolo ' = (transpuesta) en el ascii 39.
a=
1
2
3
4
5
ó simplemente dando el rango entre llaves [] y de una vez indicando que se trata de un
rango transpuesto así:
» a=[1:5]'↵
a=
1
2
3
4
5
Posiciones de un vector
» w=[1 6 2 8 12];↵
»w(4)↵
ans=
8
»
Se puede hacer referencia a un rango de valores del vector indicando las pociones de
dicho rango. Por ejemplo si se quisiera referenciar los valores 6 2 y 8 simplemente se
hace referencia a las posiciones 2 a la 4 así:
» w(2:4)↵
ans =
628
»
» w(3)=15↵
w=
1 6 15 8 12
»
Note que a pesar de haber cambiado la posición 3 cuyo valor era 2 por el valor 15, al no
haber dado punto y coma (;) al final, Matlab devuelve todos los valores de w.
» w(10)=7↵
w=
1 6 15 8 12 0 0 0 0 7
»
Unión de vectores
» x=1:10;↵
» y=sin(x);↵
» [x,y]↵
ans =
Columns 1 through 6
1 2 3 4 5 6
Columns 7 through 12
7 8 9 10 0.84147 0.9093
Columns 13 through 18
0.14112 -0.7568 -0.95892 -0.27942 0.65699 0.98936
Columns 19 through 20
0.41212 -0.54402
El resultado es un vector de 20 valores donde los 10 primeros valores corresponden al
vector x y los 10 últimos valores corresponden al vector y.
» [x y]↵
ans =
Columns 1 through 6
1 2 3 4 5 6
Columns 7 through 12
7 8 9 10 0.84147 0.9093
Columns 13 through 18
0.14112 -0.7568 -0.95892 -0.27942 0.65699 0.98936
Columns 19 through 20
0.41212 -0.54402
» x=1:100;↵
» y=sin(x);↵
» z=[x(1:10),y(1:5)]↵
z=
Columns 1 through 6
1 2 3 4 5 6
Columns 7 through 12
7 8 9 10 0.84147 0.9093
Columns 13 through 15
0.14112 -0.7568 -0.95892
»
Si se desea multiplicar los valores que ocupen la misma posición entre dos vectores del
mismo orden y del mismo tipo se realiza de la siguiente manera.
» w = [1 2 3 4 5]↵;
» x=1:5;↵
»w.*x↵
ans =
1 4 9 16 25
»
La multiplicación realizada fue 1*1 2*2 3*3 4*4 5*5
Otros ejemplos:
»x = [1 2 3]; ↵
»y = [4 5 6]; ↵
»z = x. *y ↵
resulta en
z = 4 10 18
Las expresiones A./B y A.\B dan los cocientes de los elementos individuales.
Realice los siguientes ejemplos: a.*b, a.*c, b.*c con los siguientes valores para cada
vector.
a=[2 4 5 7 9];
b=[1 16 12 13 23];
c=1:-0.1:0.5;
Nota: El punto se le coloca a la primera variable con el fin de indicarle a Matlab que la
multiplicación que se realiza no es de tipo matricial sino valor a valor que ocupa la
misma posición.
Elementos de matrices
Los elementos de una matriz pueden ser cualquier expresión de MATLAB. Todo en
MatLab se considera como matriz.
»x(4) = abs(x(1))↵
resultaría : x = -1.3000 1.7321 4.8000 1.3000
Por teclado desde el Prompt del Matlab se puede digitar los valores que en forma
matricial se desea guardar bajo el nombre de un identificador o variable. En el caso del
ejemplo siguiente se guarda una matriz de orden 3x3 en la variable A.
» A=[1 2 3; 4 5 6; 7 8 9]↵
ó
» A=[1 2 3↵
4 5 6↵
7 8 9];↵
ó
» A=[1,2,3; 4,5,6; 7,8,9]↵
A=
1 2 3
4 5 6
7 8 9
Nótese que en el caso primero donde no se colocó ";" al final se muestra después la
matriz asignada, mientras en el segundo caso donde si se coloco el “;” no aparece la
confirmación de asignación de los datos.
También puede generar una matriz de la siguiente manera
»r = [10 11 12];↵
»A = [A; r]↵ se estaría agregando al final de la matriz A, los valores del vector r ó
»A = [r; A]↵ se estaría agregando al inicio de la matriz A, los valores del vector r
El resultado sería:
A= 1 2 3 10 11 12
4 5 6 ó 1 2 3
7 8 9 4 5 6
10 11 12 7 8 9
El vector r debe tener el mismo número de elementos como columnas tiene la matriz A.
??? All rows in the bracketed expression must have the same number of columns.
Si el vector fila se quisiera adicionar a la matriz pero como vector columna entonces se
procede a agregarlo pero transpuesto así:
Ejemplo:
» B = reshape(A,2,6)↵
B=
1 3 5 7 9 11
2 4 6 8 10 12
Note que el orden de la matriz A es de 3*4 es decir 12 elementos que debe ser igual al
número de elementos del nuevo orden. 2*6 de B.
» B=reshape(A,2,5)
Ejemplos
Se crea inicialmente una matriz de orden 2x2 con los siguientes valores:
» A = [1 2; 3 4]↵
A=
1 2
3 4
Note que se asigna valores a la matriz delimitándolos con las llaves [ ] y a continuación
se modifica un valor haciendo referencia a la posición de dicho valor entre paréntesis
( ).
Se puede referir a un elemento de la matriz A, por ejemplo, A(i, j). Se trata del elemento
de la fila i y la columna j.
» A(1,1) = A(1,2)+A(2,1)↵
la posición (1,1) de la matriz A, quedará ahora con el valor de la posición (1,2)= "2" + el
valor de la posición (2,1)="3" es decir 2+3=5.
» A↵
A=
5 2
3 4
» A(1,2) = A(2,1)↵. En este ejemplo tenga en cuenta que a pesar de que se modifica un
sola posición, al no colocar punto y coma al final de la instrucción, la PC devuelve todos
los valores de la matriz.
A=
5 3
3 4
» A(2,2) = 10↵
A=
5 3
3 10
Ejemplo
» clear A↵
» 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
» b = A(:)↵
b=
1
3
5
2
4
6
» A = [1 2 3 4 5 6 7 8 9 10
12 13 14 15 11 16 17 18 19 20
11 12 13 14 15 16 17 18 19 20
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 1 2] ↵
A=
1 2 3 4 5 6 7 8 9 10
12 13 14 15 11 16 17 18 19 20
11 12 13 14 15 16 17 18 19 20
2 3 4 5 6 7 8 9 10 11
3 4 5 6 7 8 9 10 1 2
Por ejemplo, suponga que a la matriz anterior A, se ejecuta A(1:5, 3). Se estará
especificando la submatriz 5 x 1, ó vector columna 5 filas por 1 columna, que consiste
en los primeros cinco elementos de la tercera columna de A.
» A(1:5, 3) ↵
ans = 3
14
13
4
5
ans =
7 8 9 10
17 18 19 20
17 18 19 20
8 9 10 11
9 10 1 2
Utilizando solo los dos puntos denota todo lo correspondiente a la fila ó columna.
Podríamos tener una instrucción como:
ans =
1
12
11
2
3
ans =
3 5 10
14 11 20
13 15 20
4 6 11
5 7 2
»A(:,[3 5 10]) = B(:, 1:3) ↵. A través de esta instrucción se reemplaza la tercera, quinta
y décima columna de la matriz A con las primeras tres columnas de la matriz B siempre
y cuando la matriz B tenga el mismo numero de filas de la matriz A.
Se genera una matriz de tres filas por tres columnas como la siguiente
» A = [ 1 2 3; 3 4 5; 6 7 8]↵
A=
12 3
34 5
67 8
Se puede hacer referencia para usar sus valores, a filas y/o columnas de una matriz
siempre y cuando estas existan en la matriz. En el siguiente ejemplo se hace referencia
a las columnas 3 y 4 de la matriz A. La columna 4 no existe por tanto se generará un
error como el que se muestra a continuación.
» A(1:2,3:4)↵
??? Index exceeds matrix dimensions.
Si la referencia se hace par asignar valores a la matriz, y los campos a los cuales hace
referencia no existen, MatLab crea los campos necesarios rellenados con ceros. Por
ejemplo si se tiene la siguiente matriz
» A = [ 1 2 3; 3 4 5; 6 7 8]↵
A=
12 3
34 5
67 8
Y se da el comando
»A(3,4)=3; ↵
A↵
El resultado seria
A=
12 3 0
34 5 0
67 8 3
Otros Ejemplos
♦ A(1:3,5) corresponde a una matriz de 3x1 que tiene los tres primeros elementos de
la columna 5 de A
♦ A(1:3, 5:9) Hace referencia a una matriz de 3x4 que contiene los elementos de las
tres primeras filas y las columnas de la 5 a la 9 de A
♦ A(:,5) Hace referencia a todos los elementos de la columna 5 de A
♦ A(1:5,:) Hace referencia a todos los elementos de las primeras cinco filas de A
♦ A(:,[4 6]) = B(:,1:2) reemplaza la cuarta y sexta columnas de A con las dos primeras
columnas de B. Las dos matrices deben tener el mismo número de filas.
A=[1 2; 3 4] + i*[5 6 ; 7 8]
ó
A=[1 2; 3 4] + i*[5 6 ; 7 8]
ó
A=[1+5i 2+6i; 3+7i 4+8i]
A=
1.0000 + 5.0000i 2.0000 + 6.0000i
3.0000 + 7.0000i 4.0000 + 8.0000i
Generación de tablas
» x=(0:0.2:3);↵
» y=exp(-x).*sin(x);↵
» [x ; y]↵
ans =
Columns 1 through 7
0 0.2000 0.4000 0.6000 0.8000 1.0000 1.2000
0 0.1627 0.2610 0.3099 0.3223 0.3096 0.2807
Columns 8 through 14
1.4000 1.6000 1.8000 2.0000 2.2000 2.4000 2.6000
0.2430 0.2018 0.1610 0.1231 0.0896 0.0613 0.0383
Columns 15 through 16
2.8000 3.0000
0.0204 0.0070
Matrices Transpuestas: El caracter ' (apóstrofe - Alt 39 del ASCII) denota la transpuesta
de la matriz. Si se tiene definida previamente la matriz A y se escribe en el prompt
Las operaciones suma y resta también están definidas si uno de los operandos es un
escalar, es decir, una matriz 1x1.
Ejemplo:
En el siguiente ejemplo se define las matrices A y B cada una de ellas con dos filas y
tres columnas.
Ejemplo:
ans = 7 7 7
777
» C=A+B↵
C= 777
777
Multiplicando Matrices:
Si A = [ 1 2 3 y x=[-1
4 5 6 0
7 8 0] 2]
»b = A*x↵ resulta
b=5
8
-7
» pi*x↵
ans =
-3.1416
0.0000
6.2832
Producto escalar:
Dividiendo Matrices:
Manipulación de Matrices
» a=[1 2 3; 2 3 4; 4 5 6] ↵
» diag(a) ↵
ans = 1
3
6
» a(1,:)=a(1,:)/a(1,2) ↵ Se dividen todos los elementos de la fila 1 de la matriz A por
al valor almacenado en la posición 1,2 de la misma matriz
a=
0.5000 1.0000 1.5000
2.0000 3.0000 4.0000
4.0000 5.0000 6.0000
DET Determinante.
DET(X) es el determinante de la matrix cuadrada X.
Porque al tener una matriz su determinante igual a cero, el matlab entrega como valor
inverso lo siguiente:
» inv(A)
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.055969e-018.
ans =
-4.5036e+015 9.0072e+015 -4.5036e+015
9.0072e+015 -1.8014e+016 9.0072e+015
-4.5036e+015 9.0072e+015 -4.5036e+015
» help diag
DIAG(X,K) when X is a matrix is a column vector formed from the elements of the K-th
diagonal of X.
Ejemplo
m = 5;
diag(-m:m) + diag(ones(2*m,1),1) + diag(ones(2*m,1),-1)
produces a tridiagonal matrix of order 2*m+1.
See also SPDIAGS, TRIU, TRIL.
Overloaded methods
help sym/diag.m
» diag(A)↵
ans =
1
5
9
[V,D] = EIG(X) produce una matrix diagonal D de eigenvalores y una matriz completa V
whose columns are the corresponding eigenvectors so that X*V = V*D.
Overloaded methods
help sym/eig.m
help lti/eig.m
» eig(A)↵
ans =
-3.0000
2.0000
1.0000
v - Vectores característicos
d - Valores característicos
» [v d]=eig(A)↵
v=
0.9435 -0.8729 0.5774
-0.3145 -0.4364 0.5774
0.1048 -0.2182 0.5774
d=
-3.0000 0 0
0 2.0000 0
0 0 1.0000
» expm(A)↵
ans =
5.2541 11.0757 -13.6115
2.2686 5.2541 -4.8044
0.8007 2.2686 -0.3510
Factorización LU de A: lu(A)
» [L U]=lu(A)↵
L=
0 1.0000 0
1.0000 0 0
0 0.1429 1.0000
U=
1.0000 0 0
0 7.0000 -6.0000
0 0 0.8571
Inversa de A: inv(A)
» help inv
Overloaded methods
help sym/inv.m
help zpk/inv.m
help tf/inv.m
help ss/inv.m
help lti/inv.m
help frd/inv.m
» inv(5)
ans =
0.2
3x + 2y + 4z = 10
x - 5y + z = 5
x - y +z = 1
Se puede dar solución a dicho sistema utilizando la función inv. Se interpreta el sistema
como AX=B donde A es la matriz de coeficientes del sistema, X son las variables (x,y,z)
y B el el vector columna de los términos independientes (10,5,1). De esta forma
X=inv(A)*B. Interprete la inv(A) como 1/A, ya que la división con matrices no opera.
Solucionando el problema quedará así:
» A=[3 2 4
1 -5 1
1 -1 1];
» b=[10
5
1];
» inv(A)*b
ans =
-12
-1
12
» p=poly(A)↵
p=
1.0000 0.0000 -7.0000 6.0000
» r=roots(p)↵
r=
-3.0000
2.0000
1.0000
para revisar otras funciones referentes a matrices ejecutar desde el prompt del Matlab
la siguiente instrucción:
» help matlab\elmat
Existen tres funciones para matrices: expm XE "expm" , logm XE "logm" y sqrtm XE
"sqrtm" .