Continuando con matrices, la
importancia de esta forma matemática de representar objeto, cosas, variables es
muy amplio que si nos pusiéramos a profundizar sobre el tema tocaría escribir
un sinnúmero de artículos más, pero lo
que haremos es dar una breve información. La teoría matriz es ampliamente
utilizada en la informática. Las bibliotecas gráficas como por ejemplo OpenGL
se valen de transformaciones espaciales y de las matrices para representar
gráficos 3D a 2D que luego se traducen a imagen en los monitores.
También son muy útiles para
agilizar algunas operaciones algebraicas que de otro modo serían tediosas de
resolver de otro modo. Por ejemplo, calcular el valor n-ésimo (para un n muy
grande) de la serie de fibonacci es impráctico por algoritmos recursivos, e
iterativos. Lo mejor es optar por algoritmos basados en el principio divide y
vencerás y en las matrices.
Los sistemas de detección de
rostros no podrían concebirse sin el aporte de las transformaciones espaciales,
vectoriales y de las matrices. En la
programación lineal se emplea ampliamente los sistemas de ecuaciones e
inecuaciones. Estos, como ya he dicho se resuelven velozmente mediante
matrices.
En los videos juegos y sistemas
de simulación se emplean muchas veces para representar de forma abstracta
ciertas estructuras de datos que puedan representar algunas entidades del
dominio en estudio. Por ejemplo, se puede representar o concebir el mapa de un
terreno de un juego como una matriz. Como es el caso del juego buscaminas que
se ha dado como ejemplo en clases de algoritmo para la temática de matrices.
Pero como no vamos a profundizar
en el tema, veremos como se utilizan técnicas en Matlab para resolver distintos
tipos de matrices; como sabemos Matlab está fundamentalmente orientado al trabajo
y el cálculo matricial. Veremos que las operaciones están definidas para el
trabajo con este tipo de elementos.
Por ejemplo, el siguiente comando
define una matriz A de dimensión (3x3):
>> A=[1 2 3; 4 5 6; 7 8 9]
La respuesta del programa es:
1 2 3
4 5 6
7 8 9
Podemos hacer las operaciones, suma
(+), resta (-), multiplicación (*), producto punto (.*), exponencial (^), división
(/) (\), inversa (‘).
inv(A) da como resultado la
matriz inversa de A.
det(A) da como resultado el
determinante de A.
trace(A) da como resultado
la traza de A.
rank(A) da el rango de A
eye(n) forma la matriz
identidad de tamaño (nxn)
zeros(m,n) forma una matriz
de ceros de tamaño (mxn)
zeros(n) forma una matriz
de ceros de tamaño (nxn)
ones(n) forma una matriz de
unos de tamaño (nxn)
ones(m,n) forma una matriz
de unos de tamaño (mxn)
rand: este comando genera
números pseudoaleatorios distribuidos uniformemente entre 0 y 1. Cada llamada
proporciona un nuevo número.
rand(n): genera una matriz
de números pseudoaleatorios entre 0 y 1, con distribución uniforme, de tamaño
nxn.
rand(m,n): igual que en el caso anterior pero de tamaño
mxn.
El operador (:) es de gran importancia en Matlab. Puede decirse que
es un operador que respeta el rango. Veamos su utilidad con algunos ejemplos:
>> x=1:10
x =
1 2
3 4 5
6 7 8
9 10
>> x=[0:2:10]
x = 0 2
4 6 8
10
A continuación veamos cómo
podemos mostrar los elementos de T en el orden en que es almacenado. En primer lugar,
asignemos un valor a T:
T=rand(4,2,3);
En el vector columna
correspondiente, los elementos vienen dados en el orden en que son almacenados
por:
for p=1:3
for n=1:2
for m=1:4
disp(T(m,n,p));
end
end
end
Para obtener ayuda acerca de
estas funciones, en la ventana de MatLab escribe help sub2indo help ind2sub.
Para obtener ayuda mas detallada, escribe doc sub2ind o doc ind2sub.
Ejemplo
Escriba una matriz que de los
puntos intercalados dentro de la matriz como se realiza en una tabla de ajedrez.
Void imprime_ajedrez(matrix,m,n)
Variables:
I: entero
INICIO
PARA
i DESDE 1 HASTA m CON_VARIACION +1
SI
i % 2 <> 0
Imprime_fila_intercalada(matrix,
i, 1, n)
DE_LO_CONTRARIO
Imprime_fila_intercalada(matrix,i,2,n)
Fin(SI)
Fin(PARA)
FIN
Fin(imprime_ajedrez)
Void imprime_fila_intercalada(matriz, fila, inicio, fin)
Variables:
j: entero
INICIO
PARA
j DESDE inicio HASTA fin CON_VARIACION +2
ESCRIBA(matriz[fila][j]
Fin(PARA)
FIN
Fin(imprime_fila_intercalada)
Proceso en Matlab
function imprime_ajedrez(matriz,m,n)
for i = 1:1:m
if mod(i,2) ~= 0
imprima_fila_intercalada(matriz,
i, 1, n);
else
imprima_fila_intercalada(matriz,
i, 2, n);
end
end
end
POR CAMILO BORJA © 2015 ALL RIGHTS RESERVED.
Fuentes consultadas.
Manipulación de matrices en Matlab.2015. kioskea.com. http://es.kioskea.net/faq/2991-manipulacion-basica-de-matrices-en-matlab.
Mnp@ofimatica.net.
2015. Manipulación básica de matrices en MatLabhttp://es.kioskea.net/faq/matlab-141#2991
0 comentarios:
Publicar un comentario