Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MÓDULO
7 SOBRE
PROGRAMACIÓN MATLAB
Docente: Francisco Muñoz Paba MSc.
OBJETIVOS
Al terminar este módulo el estudiante estará en condiciones de:
INTRODUCCIÓN
En el módulo 6 se analizan los descriptores de edición: descriptores de edición de datos,
descriptores de edición de control y descriptores de edición de cadena de caracteres para
la salida/entrada de valores enteros, reales y complejos. Este módulo describe los
arreglos, como se definen en MATLAB y explica la manera de expresar y aplicar las
proposiciones que se utilizan en los arreglos. Con frecuencia es necesario trabajar con
cantidades numéricas que son elementos de un grupo asociado llamado arreglo y de
acuerdo con su forma también se les puede llamar matrices o vectores. Un arreglo o
matriz es una familia de elementos o cantidades, relacionados, todos asignados al mismo
nombre de variable, cada elemento se identifica por un subindice diferente. Un subíndice
es el orden de los elementos en un arreglo. Las variables que son elementos de un arreglo
se conocen como variables con subindices. Las variables sin subindices se definen como
variables sencillas.
Considérese un programa para resolver tres ecuaciones simultáneas con tres incognitas,
X, Y y Z. Se implican tres coeficientes distintos de X, tres coeficientes diferentes de Y,
tres coeficientes distintos de Z y tres diferentes constantes (sumas):
A1 X + B1Y + C1 Z = SUM 1
A2 X + B2Y + C 2 Z = SUM 2
A3 X + B3Y + C 3 Z = SUM 3
Los nueve coeficientes también pueden asignarse al nombre de un solo arreglo, como
C(por coeficiente), con nueve elementos:
ARREGLOS
Los arreglos en MATLAB pueden ser de una a siete dimensiones,lo que significa que
una variable con subindice que es un elemento de ese arreglo tendrá de uno a siete
subíndices, respectivamente. Cada elemento de un arreglo es un escalar. El análisis en
éste módulo se limita a arreglos de una y dos dimensiones, con variables de uno y dos
subíndices, respectivamente.
La variable N(J,K) es una variable con subíndices entera, de dos dimensiones con dos
subíndices, J y K. El primer subíndice especifica la fila y el segundo subíndice la
columna. Por ejemplo,el elemento N(2,3) se localiza en la segunda fila , tercera columna
del arreglo entero bidimensional N(J,K).
>> B=[1 2 3;
;4 5 6;
;7 8 9]
La salida es:
B =
1 2 3
4 5 6
7 8 9
Para convertir los elementos filas a elementos columnas, de éste arreglo bidimensional,
se coloca un apóstrofo ( ' ) al final del corchete :
>> B=[1 2 3; ;4 5 6;;7 8 9]'
La salida es:
B =
1 4 7
2 5 8
3 6 9
4 5 10 12 7 9 12
7 6 11 14 18
8 5 20 15
TABLA 7.2 LECTURA Y ESCRITURA DE TABLAS (USO DE LOS DOS PUNTOS (:))
Arreglo Descripción____________________________________________________
A(:,n) Se refiere a todos los elementos de la fila de una columna n de la matríz A.
A(n,:) Se refiere a los elementos de todas las columnas de la fila n de la matríz A.
A(:,m:n) Se refiere a los elementos de toda la fila entre columnas m y n de la matríz A.
A(m:n,:) Se refiere a los elementos en todas las columnas entre las filas m y n de A.
A(m:n,p:q) Se refiere a los elementos en las filas m hasta n y las columnas p hasta q de A.
A(:) Lista todos los elementos de A en secuencia ordenada en columna.
Una vez generada la tabla, los elementos o componentes de la tabla son identificados por
sus subíndices (ver Tabla 7.2), tal como se ilustran en los siguientes ejemplos:
Si se tiene una matríz M =[7 9 12; 11 14 18;5 20 15] y se quiere trabajar con la columna 2
de elementos 9 14 y 20 de la matríz M. Escriba en la línea de comando de MATLAB:
>> M2=M(:,2)
La salida es:
M2 =
9
14
20
>> M3=M(2:3,1:2)
La salida es:
M3 =
11 14
5 20
Selecciona los valores de las 2ª y 3ª filas de las columnas 1 y 2 .
EJEMPLO 7.1 GENERACIÓN DE VALORES DE ARREGLOS CON CICLOS for … end
El siguiente programa muestra la forma de definir un arreglo real unidimensional de cinco
elementos y como se asignan valores numéricos a cada elemento del arreglo:
A= [0.5 1.0 1.5 2.0 2.5]
Para utilizar datos de un arreglo, sólo tiene que usar el subíndice del elemento de el arreglo
que desea trabajar. Los valore asignados en notación matemática son:
A(1) = 0.5 A(2) = 1.0 A(3) = 1.5 A(4) = 2.0 A(5) =2.5
EJEMPLO 7.2 GENERACIÓN DE VALORES DE ARREGLOS CON CICLOS for … end anidados.
Dado que los valores asignados a las 48 variables con subíndice en este arreglo aumentan
por incrementos uniformes de 1 a 48, tanto los valores del arreglo como el índice entero
pueden generarse anidando en el programa ciclos for … end implícitos como sigue:
% **************** Programa 7.2 ***********************
clear all,clc
N=0;
for J=1:6
for L=1:8
N=N+1;
K(J,L)=N;
KCUAD(J,L)=K(J,L)^2;
disp(ʹ ESTE ES EL ARREGLO K ʹ )
disp([K])
disp(ʹ ESTE ES EL ARREGLO KCUAD ʹ )
disp([KCUAD])
end
end
EJEMPLO 7.3 GENERACIÓN DE VALORES DE ARREGLOS CON CICLOS for … end anidados.
Genere el siguiente arreglo de A de 4x5, usando un ciclo for …end anidado:
1 2 3 4 5
A= 2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
A =
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
1 2 3 4 1
A= 2 4 6 8 ⇒ B= 2 4
3 6 9 12 3 6 9
4 8 12 16 4 8 12 16
end
end
disp(ʹ Esta es la matriz A ʹ)
A
for i=1:3
for j=1:3
B(j,i)=A(i,j);
end
end
disp(ʹ Esta es la matriz traspuesta de A ʹ )
B
La salida del programa es:
Esta es la matriz A
A =
1 2 3
2 4 6
3 6 9
Esta es la matriz traspuesta de A
B =
1 2 3
2 4 6
3 6 9
Para trabajar con estos elementos del arreglo en forma unidimensional, escriba en la línea
de comando de MATLAB:
>> A=A(:)
A =
1
2
3
2
4
6
3
6
9
subíndice debe estar dentro de los rangos correspondientes definidos en la declaración del
arreglo y el número del subíndice debe ser igual al rango. Por ejemplo, el siguiente
diagrama muestra la localización espacial de un arreglo b de 5x4 y el orden en que se
realizan los cálculos en el arreglo:
Si J=1 X= A + B + C + D
Si J=2 X= (A + B + C + D)/4
Si J=3 X= (A + B)/(C + D)
Si J=4 X= A/B + C/D
Si J=5 X= A/B - C/D
Imprima todos los datos iniciales y los valores de X con encabezados adecuados.
Considere un escape en el programa si J es mayor que 5. El programa debe terminar
cuando se lea el último valor. Use los siguientes datos de prueba:
J A B C D
1 1.0 2.0 3.0 4.0
2 5.6 2.0 10.4 4.0
3 -10.0 3.5 35.3 6.3
4 27.8 38.33 45.75 -41.02
5 33.68 21.46 13.21 14.36
El siguiente es el programa codificado en MATLAB:
end
if J==3
X(J)=(A(J)+B(J))/(C(J)+D(J));
end
if J==4
X(J)=A(J)/B(J)+C(J)/D(J);
end
if J==5
X(J)=A(J)/B(J)- C(J)/D(J);
end
if J>5
break
end
end
disp([JJ A B C D X(:)])
1 2 3 1 2 3 4
A= 2 4 6 B= 2 4 6 8
3 6 9 3 6 9 12
La multiplicación realizada manualmente es :
C(:,1)=[1*1+2*2+3*3;1*2+2*4+3*6;1*3+2*6+3*9]
C(:,2)=[1*2+2*4+3*6;2*2+4*4+6*6;3*2+6*4+9*6]
C(:,3)=[1*3+2*6+3*9;2*3+4*6+6*9;3*3+6*6+9*9]
C(:,4)=[1*4+2*8+3*12;2*4+4*8+6*12;3*4+6*8+9*12]
Donde C(:,1),C(:,2),C(:,3) y C(:,4) son los valores de las filas de las
columnas 1, 2, 3 y 4.
El siguiente programa realiza los calculos hechos anteriormente:
Vendedor 2
Número de articulos= 26
Precio total =32.650
Vendedor 3
Número de articulos= 26
Precio total =55.750
Articulo 1 15
Ventas brutas=18.000
Articulo 2 7
Ventas brutas=15.050
Articulo 3 18
Ventas brutas=11.700
Articulo 4 9
Ventas brutas=38.700
Articulo 5 15
Ventas brutas=30.000
clear all
clc
N=3;M=3;
A=[1 2 3;4 5 6;7 8 9];B=[2 4 6;3 6 9;4 8 12];
for I=1:N
for J=1:M
BB(I,J)=0;
for K=1:N
BB(I,J)=BB(I,J)+A(I,K)*B(K,J);
end
end
end
% Este es el producto A*B
BB;
for i=1:M
for j=1:M
C(i,j)=0;
for k=1:N
C(i,j)=C(i,j)+B(k,i)*BB(k,j);
end
end
end
% Este es el producto C=transpose (B)*A*B
C
La salida del programa es:
C =
477 954 1431
954 1908 2862
1431 2862 4293
Por ejemplo, para convertir la siguiente matriz A = [1 2 3 4;2 4 6 8;3 6 9 12] de 3x4 a una
matriz B de 2x6, escriba en la línea de comando de MATLAB:
>> A = [1 2 3 4;2 4 6 8;3 6 9 12]
A =
1 2 3 4
2 4 6 8
3 6 9 12
>> B=reshape(A,2,6)
B =
1 3 4 3 9 8
2 2 6 6 4 12
Una fila o una columna de una matriz A, se puede borrar asignandole un vector nulo [ ].
Por ejemplo, sea A= [1 2 3 4;2 4 6 8;3 6 9 12] para borrar la segunda columna de A, escriba
en la línea de comando de MATLAB:
>> A(:,2)=[]
La salida es:
A =
1 3 4
2 6 8
3 9 12
M
Ci = ∑ aij b j para i = 1,2,...N
j =1
El siguiente programa multiplica la matriz A=[1 2 3;2 4 6;3 6 9] de dimensión 3x3 por el
vector B=[4 8 12] de dimensión 1x3:
% *********** Programa 7.14 ***************
clear all
clc
A=[1 2 3;2 4 6;3 6 9];
B=[4 8 12];
for I=1:3
C(I)=0;
for J=1:3
C(I)=C(I)+A(I,J)*B(J);
end
end
C
La salida del programa es:
C =
56 112 168
1 2 3
1 2
A = 4 5 6 ⇒ a=
7 8 9 3 4
El siguiente programa codificado en MATLAB, realiza esa operación :
i+K
Ai j = − ∑ Si l Al j j=i+K
l = i +1
El siguiente ejemplo ilustra la aplicación de éste módelo:
Se desea hallar la matriz inversa A de la siguiente matriz triangular superior S:
1 2 3 4
0 4 6 8
S=
0 0 9 12
0 0 0 16
N1=3;
for K=1:N1
NK=4-K;
for I=1:NK
J=I+K;
D=0;
I1=I+1;
IK=I+K;
for L=I1:IK
D=D+S(I,L)*A(L,J);
A(I,J)= -D/S(I,I);
end
end
end
A
La salida del programa es:
A =
1.0000 -0.5000 0 0
0 0.2500 -0.1667 0
0 0 0.1111 -0.0833
0 0 0 0.0625
>> A(2,2)=12:-2:0
>> A
En éste otro caso, el carácter ( ), aparece del lado izquierdo del signo igual. El término
A(1,1), indica que A es un arrglo de celda y el contenido de la primera fila y primera
columna del arreglo, se encuentran del lado derecho del signo igual. Esto se denomina
indexando la celda. Los paréntesis ( ), se usan para identificar las celdas, pero sin mirar su
contenido.
PARTICIÓN DE MATRICES
Algunas veces las matrices, se expresan en términos de sus coeficientes escalares, pero a
veces, es conveniente escribir la matriz en forma particionada, es decir, subdividida en
submatrices. Por ejmplo, la matriz:
4 1 3 5 0
A = 6 2 7 1 1
4 8 3 9 3
4 1 3 | 5 0
A1 1 | A1 2 6 2 7 |1 1
A = − − − | − − − − = − − − − |−−−
A2 1 | A2 2 4 8 3 | 9 3
Donde:
4 1 3 5 0
A11 = A1 2 =
6 2 7 1 1
A21 = [4 8 3] A2 2 = [9 3]
Para un elemento de la matriz, las submatrices de una matriz particionada son identificadas
por subíndices de filas y de columnas. La matriz A puede ser particionada como se desee.
Debe ser obvio, sin embargo, que la partición no altere la matriz, porque sólo se escribe en
forma diferente, pero sin cambiar su naturaleza.
Las operaciones de matrices pueden realizarse entre matrices expresadas en forma
particionada, de la misma forma en que se escriben en términos de sus coeficientes
escalares. Por ejemplo, considere la matriz A anterior y la siguiente matriz B:
1 2
0 1
2 3 B1
B = − − − = − −
1 4 B2
3 − 1
1 2
1 4
Donde: B1 = 0 1 B2 =
2 3 3 − 1
Utilizando las mismas reglas de las matrices, se obtienen los mismos resultados de la
multiplicación de matrices particionadas, escribiendolas en términos de sus coeficientes
escalares. Sin embargo, se recomienda, al realizar una operación con matrices
particionadas, sus particiones deben ser relativamente compatible con la operación que se
esté realizando. Por lo tanto, en los casos anteriores, el número de columnas de A11 deben
ser igual al número de filas de B1, la misma aplicación para A12 y B2, A21 y B1, A22 y B2 o
de lo contrario la matriz no estaría definida.
1 3 | 0 0
− 1 − 2 | 0 0 A | 0
11
A = − − − − | − − − = − − − − −
0 0 | 2 3 0 | A2 2
0 0 | 1 1
− 2 − 3 | 0 0
1 1 | 0 0 B11 | 0
B = − − − − − − − − − = − − − − −
0 0 | − 1 3 0 | B2 2
0 0 | 1 − 2
El producto de A y B es:
A11B11 | 0 1 | 0
A * B = − − − − − − − = − − − − = Matriz unidad
0 | A2 2 B2 2 0 | 1
1 0
0 1