Está en la página 1de 23

Variables con subíndices y arreglos

MÓDULO
7 SOBRE
PROGRAMACIÓN MATLAB
Docente: Francisco Muñoz Paba MSc.

7 VARIABLES CON SUBINDICES Y ARREGLOS

OBJETIVOS
Al terminar este módulo el estudiante estará en condiciones de:

 Crear manualmente un arreglo o matriz en secuencia.


 Entender la manipulación y notación de matrices.
 Determinar el tamaño, longitud y dimensión de una matriz.
 Identificar un elemento de un arreglo o matriz
 Utilizar variables con subindices que son elementos de un arreglo.
 Definir y distinguir arreglos de una dimensión y dos dimensiones de un archivo.
 Generar valores de arreglos de una dimensión con la proposición for … end.
 Utilizar entrada/salida de arreglos de una dimensión con las proposiciones input
y fprintf con formato dirigido usando el ciclo for … end.
 Utilizar entrada/salida de arreglos de dos dimensiones con las proposiciones
input y fprintf con formato dirigido usando el ciclo for … end anidado.

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

2.0 X + 3.0Y + 4.0 Z = 49.0


4.0 X + 3.0Y + 2.0 Z = 41.0
X + Y + Z = 15.0

Universidad del Atlántico-Facultad de Ingeniería 1


Variables con subíndices y arreglos

A cada coeficiente y a cada suma podría asignársele un distinto nombre de variable


sencilla:
AX + BY + CZ = R
DX + EY + FZ = S
GX + HY + PZ = T
Cuando se tienen muchos nombres de variables(12 en este caso) puede requerirse de
inventiva, de recordar y de contar. Es posible reducir en forma significativa el número de
proposiciones en el programa y muchas de las tareas de recordar y contar pueden pasarse
del programador a la computadora si los tres coeficientes de cada una de las incognitas
X, Y y Z son elementos de manera respectiva, de tres arreglos, A, B y C y las tres sumas
son miembros de un cuarto arreglo, SUM:

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:

C1,1 X + C1, 2Y + C1,3 Z = SUM 1


C 2,1 X + C 2, 2Y + C 2,3 Z = SUM 2
C 3,1 X + C 3, 2Y + C 3,3 Z = SUM 3

El primer subindice de cada elemento de C se refiere a la ecuación (fila),


primera,segunda o tercera; el segundo subíndice especifica la incógnita(columna), la
primera(X), la segunda(Y) o la tercera(Z), SUM, con un subíndice, es un arreglo de una
dimensión, C, con dos subíndices, es un arreglo de dos dimensiones.
A través del conocimiento del uso de variables con subindice el programador puede
escribir programas de relativa brevedad que aprovechan todas las ventajas de las
capacidades de la computadora para procesar en forma eficiente grandes cantidades de
datos numéricos.

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.

ARREGLOS DE UNA DIMENSIÓN


Un arreglo de una dimensión se escribe en notación X 1 X 2 X 3 ... X n
Donde los números pequeños 1, 2, 3, …..,n, impresos un poco debajo de la línea, son los
subíndices. A causa de que la forma de subíndice no está disponible como parte del
conjunto de caracteres MATLAB, deben utilizarse otros símbolos. En MATLAB el
subíndice se identifica encerrándolo en paréntesis. El caso anterior, escrito con variables
con subíndices MATLAB, es:

Universidad del Atlántico-Facultad de Ingeniería 2


Variables con subíndices y arreglos

X (1) X (2) X (3) X (4) KK X ( N )


La variable X(N) es una variable real con subíndice de una dimensión con un subíndice,
N. El único subíndice en un arreglo de una dimensión específica la posición de un
elemento en el arreglo. Por ejemplo, X(3) es el tercer elemento;X(4) es el cuarto y X(N)
es el enésimo elemento en el arrglo X de N elementos reales.
ARREGLO DE DOS DIMENSIONES.
Un arreglo bidimensional se expresa en notación matemática como:
n1,1 n1, 2 n1,3 n1, 4 L n1,k
n 2,1 n 2, 2 n 2,3 n 2, 4 L n 2,k
n3,1 n3, 2 n3,3 n3, 4 L n3,k
LL LL L L
n j ,1 n j , 2 n j ,3 n j , 4 L n j ,k

El mismo arreglo expresado en MATLAB es:


Columna
______________________________________________________________
Fila 1 2 3 4 K
1 N(1,1) N(1,2) N(1,3) N(1,4) ... N(1,K)
2 N(2,1) N(2,2) N(2,3) N(2,4) ... N(2,K)
3 N(3,1) N(3,2) N(3,3) N(3,4) ... N(3,K)
..... ..... ..... ...... ... ......
J N(J,1) N(J,2) N(J,3) N(J,4) ... N(J,K)

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

REGLAS PARA VARIABLES CON SUBINDICES


1. Una variable con subíndice puede ser entera o real. A causa de que cada elemento
del arreglo se asigna al mismo nombre de la variable(arreglo). Es obvio que no
pueden haber modos mezclados entre los elementos del arreglo. Todos los
componentes de un arreglo particular son enteros o reales, como lo especifica el
indicador de la primera letra del nombre del arreglo. Las reglas que gobiernan los
nombres de variables sencillas también se aplican a todos los nombres de
variables con subíndice.
2. Los subíndices siguen al nombre de la variable y se encierran en paréntesis.
3. Los dubíndices dobles se separan por una coma.
4. Los subíndices deben ser valores enteros positivos diferentes de cero. Un subíndice
puede ser una constante, una variable o una expresión entera (Tabla 7.1).
5. A las variables con subíndices se les debe dar un valor entero antes de utilizarlas
en una proposición ejecutable. Obsérvese que los subíndices cuyos valores se
asignan como resultado del cálculo o de una iteracón no sean cero o negativos o
mayor que el tamaño del arreglo especificado.

Universidad del Atlántico-Facultad de Ingeniería 3


Variables con subíndices y arreglos

Tabla 7.1 FORMAS PERMITIDAS DE SUBÍNDICES

Variables con subíndice Subíndice


Arreglo A(5) Constante entera
Arreglo A(N) Variable entera
Arreglo A(N+5) o (N-5) Variable más una constante o una variable menos una
constante.
Arreglo A(5*N) Constante por una variable.
Arreglo A(5*N+3) o (5*N-3) Constante por una variable más una constante o una
constante por una variable menos una constante.
Las combinaciones descritas en la Tabla 7.1 representan las formas de subíndices que
en general son aceptadas por muchos compiladores MATLAB.
El arreglo A es un arreglo real de una dimensión(un subíndice) donde el valor mayor del
subíndice es N. Si N=5 el arreglo no contiene más de cinco variables reales con
subíndices(elementos), estos son:
A = [A(1) A(2) A(3) A(4) A(5)]
El arreglo B es un arreglo real bidimensional (dos subíndices) donde el valor máximo del
primer subíndice es 3, el valor mayor del segundo subíndice es 5 y el arreglo no incluye
más de 15 (3x5) valores(elementos) ordenados en 3 filas y 5 columnas:

B(1,1) B(1,2) B(1,3) B(1,4) B(1,5)


B= B(2,1) B(2,2) B(2,3) B(2,4) B(2,5) Arreglo de 3 x 5
B(3,1) B(3,2) B(3,3) B(3,4) B(3,5)

El arreglo N es un arreglo entero de dos dimensiones(dos subíndices) donde el valor


máximo del primer subíndice es 5, el valor mayor del segundo subíndice es 4 y el arreglo
no contiene más de 20(5x4) variables enteras con subíndice clasificadas en 5 filas y 4
columnas:

N(1,1) N(1,2) N(1,3) N(1,4)


N= N(2,1) N(2,2) N(2,3) N(2,4) Arreglo de 3x4
N(3,1) N(3,2) N(3,3) N(3,4)

CREANDO UN VECTOR FILA


Hay muchos formas para crear variables de vectores en fila. La forma más directa es
colocar los valores requeridos entre corchetes, separados por espacios o comas. Por
ejemplo, ambas proposiciones de asignación crean el mismo vector A:
>> A=[1 2 3 4]
La salida es:
A=
1 2 3 4
>> A=[1,2,3,4]
La salida es:
A=
1 2 3 4

Universidad del Atlántico-Facultad de Ingeniería 4


Variables con subíndices y arreglos

EL CARÁCTER DOS PUNTOS Y LA FUNCIÓN LINSPACE


En el ejemplo anterior,se puede utilizar el operador dos puntos (:) para iterar a través de
estos valores. Por ejemplo,
>> A=[1:4]
La salida es:
A =
1 2 3 4
Los corchetes no son necesarios para definir el vector.
Con el carácter dos puntos (:), un valor de paso puede también especificarse con otros
dos puntos, de la forma (inicio:valor de paso:final). Por ejemplo, para crear un vector con
todos los enteros de 1 a 9 con valor de paso de 2:
>> B=1:2:9
La salida es:
B =
1 3 5 7 9
De igual forma, la función linspace genera un vector linealmente espaciado, pero en vez de
especificar el incremento, especifica el número de valores deseados. La forma general de
esta función es: linspace(inicial,final,número). Por ejemplo, para crear un vector con
cinco valores linealmente espaciados entre 3 y 15, incluyendo el 3 y el 15:
>> v = linspace(3,15,5)
La salida es:
v =
3 6 9 12 15
El incremento se calcula por la siguiente fórmula:
incremento = (final – inicial)/(número – 1) = 3.
CREANDO EL VECTOR COLUMNA.
Con el carácter punto y coma (;) los elementos de una variable con subíndice de arreglo
unidimensional, separados por punto y coma, crean vectores columnas, Por ejemplo, el
vector v del ejemplo anterior, se puede convertir en vector columna:
>> v =[3;6;9;12;15]
La salida es:
v =
3
6
9
12
15
MATLAB tiene otra forma más rápida para convertir los elementos filas a elementos
columnas de arreglos unidimensionales o bidimensionales, utilizando el carácter apóstrofo
('):
>> v=[3 6 9 12 15]'
La salida es:
v =
3
6
9
12
15

Universidad del Atlántico-Facultad de Ingeniería 5


Variables con subíndices y arreglos

Un elemento particular de un vector es accedido usando el nombre de la variable del vector


y el número(subíndice) del elemento en paréntesis. Por ejemplo, v(3) corresponde al
elemento 9:
>> v(3)
ans =
9
El siguiente ejemplo es una matríz B de 3x3, con sus elementos filas separados por punto y
coma (;). Escriba en la línea de comando de MATLAB:

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

Los siguientes diagramas muestran, de izquierda a derecha, un escalar, un vector columna,


un vector fila y una matríz

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)

Universidad del Atlántico-Facultad de Ingeniería 6


Variables con subíndices y arreglos

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]

% ************* Programa 7.1 *****************


clear all
clc
X=0;
for N=1:5
X=X+0.5;
A(N)=X;
if N > 5
end
end
disp([A])

La salida del programa es:


A =
0.5000 1.0000 1.5000 2.0000 2.5000

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

Si en el programa anterior, cambia la proposición disp por la proposición fprintf, dada a


continuación, se obtienen los valores del arreglo A, con sus respectivos subíndices:
>> fprintf('A(1)=%2.1f A(2)=%2.1f A(3)=%2.1f A(4)=%2.1f A(5)=%2.1f \n',A)
La salida es:
A(1)=0.5 A(2)=1.0 A(3)=1.5 A(4)=2.0 A(5)=2.5
El carácter corchete [ ] puede usarse para otorgar los cinco valores, en orden, a los cinco
elementos de la variable A con subíndice:
>> A=[0.5 1.0 1.5 2.0 2.5]
La salida es:
A =
0.5000 1.0000 1.5000 2.0000 2.5000

Universidad del Atlántico-Facultad de Ingeniería 7


Variables con subíndices y arreglos

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

La salida del programa es:


ESTE ES EL ARREGLO K
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
25 26 27 28 29 30 31 32
33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48
ESTE ES EL ARREGLO KCUAD
1 4 9 16 25 36 49 64
81 100 121 144 169 196 225 256
289 324 361 400 441 484 529 576
625 676 729 784 841 900 961 1024
1089 1156 1225 1296 369 1444 1521 1600
1681 1764 1849 1936 2025 2116 2209 2304

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

El siguiente programa genera la matríz A de 4x5:

% ****************** Programa 7.3 ********************


clear all,clc
% A=[1 2 3 4 5;2 4 6 8 10;3 6 9 12 15;4 8 12 16 20];
s=0;
for J=1:5
for I=1:4
A(I,J)=I*J;
end
end
A

Universidad del Atlántico-Facultad de Ingeniería 8


Variables con subíndices y arreglos

La salida del programa es:

A =
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20

EJEMPLO 7.4 GENERACIÓN DE VALORES DE ARREGLOS CON CICLOS for … end


Se desea almacenar solamente la porción inferior triangular de la matriz A en un arreglo
unidimensional B:

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

El siguiente programa genera el arreglo B en una dimensión:


% ********** Programa 7.4 **********
clear all
clc
K=1;
for J=1:4
for I=J:4
B(K)=I*J;
K=K+1;
end
end
B
La salida del programa es:
B =
1 2 3 4 4 6 8 9 12 16

EJEMPLO 7.5 MATRIZ TRASPUESTA DE A.


Sea la matriz A = [2 1;3 4;7 0], determine la traspuesta de A mediante un programa
usando MATLAB.

% *********** Programa 7.5 **********


clear all
clc
A=[2 1;3 4;7 0];
for I=1:3
for J=1:2
B(J,I)=A(I,J);
end
end
B
La salida del programa es:
B =
2 3 7
1 4 0

Universidad del Atlántico-Facultad de Ingeniería 9


Variables con subíndices y arreglos

EJEMPLO 7.6 GENERACIÓN DE UNA MATRIZ TRASPUESTA DE A DE 3X3


El siguiente programa genera los valores de A= [1 2 3;2 4 6;3 6 9] y halla la traspuesta
de A:
% ************* Programa 7.6 ***************
clear all
clc
for J=1:3
for I=1:3
A(I,J)=I*J;

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

LOCALIZACION ESPACIAL PARA ARREGLOS BIDIMENSIONALES


MATLAB almacena un arreglo bidimensional como una secuencia continúa lineal de
celdas. Una celda es un elemento de un arreglo de cualquier dimensión. En los ejemplos, se
usan constantes enteras, pero en general cada subíndice puede formarse de una expresión
escalar, es decir, cualquier expresión aritmética cuyo valor es del tipo escalar. Cada

Universidad del Atlántico-Facultad de Ingeniería 10


Variables con subíndices y arreglos

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:

EJEMPLO 7.7 SALIDA DE DATOS CON ENCABEZADOS DE COLUMNAS.


Escriba y ejecute un programa que lea cuatro números reales A,B,C,D y un número
entero J de datos suministrados en forma de arreglos unidimensionales. Dependiendo del
valor de J el programa debe ejecutar alguno de los siguientes cálculos:

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:

% ************* Programa 7.7 ***************


clear all
clc
A=[1 5.6 -10.5 27.8 33.68]ʹ;
B=[2.0 2.0 3.5 38.33 21.46]ʹ;
C=[3.0 10.4 25.2 45.75 13.21]ʹ;
D=[4.0 4.0 6.3 -41.02 14.36]ʹ;
JJ=[1 2 3 4 5]ʹ;
disp(ʹ J A B C D Xʹ )
for J=1:5
if J==1
X(J)=A(J)+B(J)+C(J)+D(J);
end
if J==2
X(J)=(A(J)+B(J)+C(J)+D(J))/4;

Universidad del Atlántico-Facultad de Ingeniería 11


Variables con subíndices y arreglos

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(:)])

La salida del programa es:


J A B C D X
1.0000 1.0000 2.0000 3.0000 4.0000 10.0000
2.0000 5.6000 2.0000 10.4000 4.0000 5.5000
3.0000 -10.5000 3.5000 25.2000 6.3000 -0.2222
4.0000 27.8000 38.3300 45.7500 -41.0200 -0.3900
5.0000 33.6800 21.4600 13.2100 14.3600 0.6495

EJEMPLO 7.8 USO DE LISTA DE VALORES


En este ejemplo se cálcula las ventas brutas de un vendedor que vende un cierto número
de cada uno de cada cinco articulos. Donde P representa la lista de precios , C el número
de articulos , S el precio total de las ventas y CP la venta bruta de cada uno de los
articulos:
El siguiente programa realiza los calculos:

% ************* Programa 7.8 ***************


clear all,clc
P=[1.2 2.15 0.65 4.30 2.00];
C=[5 3 0 2 2];
S=0;
for I=1:5
S= S + C(I)*P(I);
end
CP=C(:).*P(:);
CP
fprintf(ʹPrecio total=%3.3f\nʹ,S)
La salida del programa es:
CP =
6.0000
6.4500
0
8.6000
4.0000
Precio total=25.050

Universidad del Atlántico-Facultad de Ingeniería 12


Variables con subíndices y arreglos

EJEMPLO 7.9 GENERACIÓN DEL PRODUCTO DE DOS MATRICES A y B


El siguiente programa genera las matrices A y B y cálcula el producto A*B:

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:

% *********** Programa 7.9 ***********


% Este programa calcula la operación
% por matrices de C=A*B
clear all
clc
for i=1:3
for j=1:3
A(i,j)=i*j;
end
end
disp(’Matríz A generada’)
A
for I=1:3
for J=1:4
B(I,J)=real(I+J);
end
end
disp(’Matríz B generada’)
B
disp(’CALCULO DEL PRODUCTO A*B ʹ)
for I=1:3
for J=1:4
sum=0;
for K=1:3
sum= sum+A(I,K)*B(K,J);
C(I,J)=sum;
end
end
end
C
La salida del programa es:
Matríz A generada
A =
1 2 3
2 4 6
3 6 9
Matríz B generada
B =
2 3 4 5
3 4 5 6
4 5 6 7

Universidad del Atlántico-Facultad de Ingeniería 13


Variables con subíndices y arreglos

CALCULO DEL PRODUCTO A*B


C =
14 28 42 56
28 56 84 112
42 84 126 168

La multiplicación de dos matrices es solamente posible, cuando el número de columnas de


la primera matriz es igual al número de filas de la segunda matriz. El resultado de la matriz
tiene el mismo número de filas como la primera matriz y el mismo número de columnas
como la segunda matriz. Observe que de acuerdo a su definición, la multiplicación de
matrices no es commutativa: A*B ≠ B*A.

ASIGNACIÓN DE VALORES A TABLAS


Además de las listas, MATLAB también permite tablas,que son arreglos bidimensionales.
Se puede considerar que las listas son cantidades con un solo subíndice y las tablas como
cantidades con doble subíndice. Las tablas son llamadas por letras solas, igual que las
listas, así que una letra dada puede representar una lista o una tabla, pero no las dos en el
mismo programa.
Definir el contenido de una tabla; es decir, dar valores a cada uno de sus elementos o
componentes, puede realizarse componente por componente, o bien de manera global. La
asignación de valores, componente por componente de una tabla de un tipo dado, se basa
en el principio que cada componente es una variable (independiente) del mismo tipo de
la tabla, por lo tanto la asignación se hace de la misma manera que para una variable no
de la tabla.

EJEMPLO 7.10 USO DE TABLAS DE VALORES


En este programa, tomamos los datos del ejemplo 7.8, añadimos la estadistica de ventas por
articulos así como por vendedor. Se suministra una tabla de datos de ventas de C, donde las
filas corresponden a los vendedores y las columnas a los articulos.
% ************ Programa 7.10 *************
clear all,clc
P=[1.20 2.15 0.65 4.3 2.0];
C=[5 3 0 2 2;7 1 12 1 5;3 3 6 6 8];
for I=1:3
S=0;
S1=0;
for J=1:5
S=S + C(I,J)*P(J);
S1= S1 + C(I,J);
end
fprintf('\n')
fprintf('Vendedor %2i\n',I)
fprintf('Número de articulos =%3i\n',S1)
fprintf('Precio total =%3.3f\n',S)
end
fprintf('\n\n')
for j=1:5
S=0;
for i=1:3
S= S + C(i,j);
Vb=S*P(j);
end
fprintf('\n')
fprintf('Articulo %i %i \n',j,S)
fprintf('Ventas brutas=%3.3f\n',Vb)
end

Universidad del Atlántico-Facultad de Ingeniería 14


Variables con subíndices y arreglos

La salida del programa es:


Vendedor 1
Número de articulos= 12
Precio total =25.050

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

EJEMPLO 7.11 GENERACIÓN DE UNA MATRÍZ B DE 2x6


Este programa genera una matríz B de NxM de números reales en secuencia lineal por filas
hasta el número 12.

% ************ Programa 7.11 ************


clear all
clc
K=0;N=2;M=6;
for I=1:N
for J=1:M
K=K+1;
B(I,J)=real(K);
end
end
B
La salida del programa es:
B =
1 2 3 4 5 6
7 8 9 10 11 12

EJEMPLO 7.12 GENERACIÓN DE LA TRASPUESTA B POR EL PRODUCTO DE A * B.


% *********** programa 7.12 *************
% Este programa calcula la operación de la matriz
% C= transpose (B)*A*B
% Donde A es una matriz cuadrada
% N: Número de filas y columnas de A y filas de B
% M: Número de columnas de B.
% BB: Arreglo auxiliar.

Universidad del Atlántico-Facultad de Ingeniería 15


Variables con subíndices y arreglos

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

CONVERSIÓN DE ARREGLOS MULTIDIMENSIONALES A UNIDIMENSIONALES


Y VICEVERSA CON LA FUNCIÓN reshape
Para convertir un arreglo multidimensional A a un arreglo unidimensional B, se utiliza la
función intrínseca reshape. La forma genérica de la función es:

Arreglo B = reshape(Arreglo A,N,M,[ ])

Donde: Arreglo A es el arreglo para la conversión.


Arreglo B es el arreglo convertido de dimensión n x m.
N es el número de filas del arreglo.
M es el número de columnas del arreglo.
[ ] representa la longitud de la dimensión.

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

Universidad del Atlántico-Facultad de Ingeniería 16


Variables con subíndices y arreglos

Para convertir la matriz B de 2x6 a un vector fila C, escriba en la línea de comando de


MATLAB:
>> C = reshape(B,1,[ ])
C =
1 2 3 2 4 6 3 6 9 4 8 12

Para realizar el proceso contrario, escriba en la línea de comando de MATLAB:


>> matriz=reshape([1 2 3 2 4 6 3 6 9 4 8 12],[2,6])
matriz =
1 3 4 3 9 8
2 2 6 6 4 12
Genera una matriz de 2x6

>> matriz=reshape([1 2 3 2 4 6 3 6 9 4 8 12],[3,4])


matriz =
1 2 3 4
2 4 6 8
3 6 9 12
Genera una matriz de 3x4.

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

EJEMPLO 7.13 COPIA DE UNA MATRIZ EN OTRA


Este programa copia una matriz A y la almacena en una matriz B. Sea A=[2 1;3 4;7 0]
% *********** Programa 7.13 ***************
clear all
clc
A=[2 1;3 4;7 0];
for I=1:3
for J=1:2
B(I,J)=A(I,J);
end
end
B
La salida del programa es:
B =
2 1
3 4
7 0

EJEMPLO 7.14 MULTIPLICACIÓN DE UNA MATRIZ POR UN VECTOR.


Un caso especial de multiplicación de matrices, se presenta cuando la segunda matriz es
una matriz columna o vector. Considere una matriz A de dimensión NxM y un vector B de
dimensión M. La multiplicación de la matriz C =A*B, dá cómo resultado un vector C de
dimensión N, cuyos coeficientes son calculados por:

Universidad del Atlántico-Facultad de Ingeniería 17


Variables con subíndices y arreglos

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

EJEMPLO 7.15 RECORRE LA MATRIZ EN ORDEN SECUENCIAL LINEAL POR FILA.


Se desea almacenar solamente la porción a=[1 2;3 4]de la matriz A=[1 2 3;4 5 6;7 8 9],
siguiendo un orden secuencial por fila.

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

% *********** Programa 7.15 ***************


clear all,clc
N=3;
M=3;
COUNT=1;
for I=1:N
for J=1:M
A(I,J) = real(COUNT);
COUNT = COUNT + 1;
end
end
A;
count=1;
for I=1:2
for J=1:2
a(I,J)=real(count);
count=count + 1;
end
end
B
La salida del programa es:
a =
1 2
3 4

Universidad del Atlántico-Facultad de Ingeniería 18


Variables con subíndices y arreglos

EJEMPLO 7.16 INVERSIÓN DE UNA MATRIZ TRIANGULAR SUPERIOR.


En algunos casos se necesita invertir una matriz triangular superior S, como se muestra a
continuación. El siguiente modelo calcula la inversa de la matriz triangular superior S. Sea
la ecuación matricial:

 S11 S1 2 S13 S1 4   A11 A1 2 A13 A1 4  1 0 0 0


   
0 S 2 2 S2 3 S 2 4  0 A2 2 A2 3 A2 4  0 1 0 0 
0 x
 0 = 
0 S3 3 S3 4 0 A3 3 A3 4  0 0 1 0 
     
0 0 0 S4 4  0 0 0 A4 4  0 0 0 1
Matriz S Matriz A Matriz unidad

Donde la matriz A es la inversa de S. Puede fácilmente verificarse que A es también una


matriz triangular superior. Multiplicando la i-ésima fila de S por la i-ésima columna de A
se obtiene:
S i i Ai i = 1
1
despejando ai i = calculamos los elementos de la diagonal principal de la matriz de A.
Si i
Multiplicando la i-ésima fila de S por la j-ésima columna de A, con j=i+1, tenemos:
Si i Ai j + Si j A j j = 0
Para calcular los elementos de la diagonal de A, siguiendo la diagonal principal, se utiliza
la siguiente fórmula:
1
Ai j = − Si j A j j
Si j
Si seguimos éste camino encontramos que para calcular los elementos de la diagonal de A
de las posiciones de K desplazada desde la diagonal principal, utilizamos la fórmula:

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 

El siguiente programa codificado en MATLAB, realiza esa operación :

% *********** Programa 7.16 ***************


clear all
clc
S=[1 2 3 4;0 4 6 8;0 0 9 12;0 0 0 16];
for I=1:4
A(I,I)=1/S(I,I);
end
A;

Universidad del Atlántico-Facultad de Ingeniería 19


Variables con subíndices y arreglos

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

GENERACIÓN DE ARREGLOS DE CELDAS


Los arreglos de celdas, son arreglos cuyos elementos son celdas. Cada celda es un arreglo
de celda y puede soportar cualquier tipo de datos de MATLAB, incluyendo arreglos
numéricos,cadena de caracteres, objetos simbólicos, otros arreglos de celdas y estructuras.
Por ejemplo, una celda de un arreglo de celda, puede contener un arreglo numérico, una
cadena de caracteres y un vector de valores complejos. Los arreglos de celdas, pueden
generarse con cualquier dimensión exacta que requiera un arreglo numérico. Sin embargo,
en muchos casos los arreglos de celdas son generados como un simple vector de celda.
Los arreglos de celdas pueden crearse, asignando datos a las celdas individuales. Existen
dos formas diferentes para acceder a las celdas:
• Si se utiliza una sintáxis de arreglos estandar para direccionar los arrglos, se deben
encerrar los contenidos de celdas entre llaves {} . Estas llaves {} construyen un
arreglo de celda. Estas actúan como la proposición cell incorporada de MATLAB.
Por ejemplo, las siguientes asignaciones generan arreglos de celdas de diferentes
tipos: numéricos, complejos, cadena de caracteres y vectores.
>> A{1,1}=[1 2 3;4 5 6;7 8 9]
>>A{1,2}= 2 + 3i
>>A{2,1}=’Una cadena de caracteres’
>> A{2,2}=12:-2:0
>> A
En éste caso, el carácter {} aparece del lado izquierdo del signo igual. El término
A{1,1}, indica que A es un arreglo de celda y el contenido de la primera fila y
primera columna del arreglo de celda, están del lados derecho del signo igual. Esto
se denomina direccionando el contenido. El carácter {}, se usa para acceder o
especificar el contenido de las celdas.
• Si se utiliza la sintáxis de arreglos estandar para indexar los arreglos de celdas, debe
encerrar los contenidos de celdas entre paréntesis ( ). Este carácter ( ), construye un
arreglo de celda y actúa como la función cell de MATLAB.
Por ejemplo, las siguientes asignaciones generan arreglos de celdas de diferentes
tipos: numéricos, complejos, cadena de caracteres y vectores.
>> A(1,1)=[1 2 3;4 5 6;7 8 9]
>>A(1,2)= 2 + 3i
>>A(2,1)=’Una cadena de caracteres’

Universidad del Atlántico-Facultad de Ingeniería 20


Variables con subíndices y arreglos

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

Puede ser particionada en 4 submatrices, como sigue:

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

Universidad del Atlántico-Facultad de Ingeniería 21


Variables con subíndices y arreglos

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

El producto de matrices A*B en forma particionada es :

 A11 A1 2   B1   A11B1 + A1 2 B2  0.632


   
A * B = − − − − −  − −  = − − − − − − −  = − − − 
 A21 A2 2   B2   A21B1 + A2 2 B2  0.693
   

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.

EJEMPLO 7.17 PRODUCTO DE DOS MATRICES PARTICIONADAS.


Considere las siguientes dos matrices A y B particionadas:

 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

Universidad del Atlántico-Facultad de Ingeniería 22


Variables con subíndices y arreglos

El producto de A y B es:

 A11B11 | 0  1 | 0
 
A * B = − − − − − − −  = − − − −  = Matriz unidad
0 | A2 2 B2 2  0 | 1 

El siguiente programa códificado en MATLAB, realiza los cálculos hechos anteriormente:

% ************ programa 7.17 ************


clear all
clc
A{1,1}=[1 3;-1 -2];% Los subindices se escriben entre {}
X=A{1,1};
A{2,2}=[2 3;1 1]; % Los subindices se escriben entre {}
Y=A{2,2};
B{1,1}=[-2 -3;1 1];% Los subíndices se escriben entre {}
U=B{1,1};
B{2,2}=[-1 3;1 -2];% Los subindices se escriben entre {}
T=B{2,2};
MultAB=(X*U)/(Y*T);
disp(MultAB)

La salida del programa es:


MultAB =

1 0
0 1

Universidad del Atlántico-Facultad de Ingeniería 23

También podría gustarte