You are on page 1of 5

lgebra Lineal Avanzada

Tarea 5
Juan Bernardo Martnez Parente Castaeda
C.U. 124458
29/04/2014
En este trabajo, queremos mostrar una aplicacin muy til de la descomposicin en valores singulares de una
matriz. Se trata del anlisis por componentes principales, mediante el cual se puede aproximar una matriz a
partir de la suma de algunas matrices ms sencillas esto es, una matriz de rango grande puede aproximarse
con la suma de matrices de rango uno.
Para apreciar mejor la utilidad de esta tcnica y con ayuda de Matlab, se ha elegido una imagen que ser
traducida a una matriz real que a su vez ser aproximada y retraducida a una imagen, de tal forma que
podamos comparar la imagen original con la imagen aproximada.
La imagen elegida es una fotografa de Paul Erds
1
almacenada en Matlab en la forma de una matriz de
tipo uint8 cuyos elementos indican el tono en escala de grises que corresponde a cada pixel.
A continuacin se muestra el cdigo utilizado para apropiar la imagen a los objetivos, con los comentarios
correspondientes:
% script_file: prueba_erdos.m
% Realiza la descomposicion en valores singulares de una fotografia y
% distintas aproximaciones por componentes principales
clear
clc
load detail
foto=imread(erdos.png); %arreglo 3-dimensional qeu contiene la info. de la imagen
foto=rgb2gray(foto); %convierte el arreglo a dos dimensiones (y a b&n)
[m,n]=size(foto);
X=zeros(m,n);
% creamos la matriz de tipo double de la imagen (antes era de tipo uint8)
for i=1:m
for j=1:n
X(i,j)=foto(i,j);
end
end
% se crea un conjunto de plots que mostrarn tres distintas
% aproximaciones de la imagen y una grfica logaritmica de los valores
% singulares de la matriz original
1
Imagen tomada de http://www-history.mcs.st-and.ac.uk/PictDisplay/Erdos.html
1
% imagen original
colormap(gray(256))
image(X) %grafica la imagen
r0 = rank(X); %calcula el rango (resulta ser de rango completo)
title([Rango = int2str(r0)])
axis image, axis off
pause
% se calcula la descomposicion en valores singulares de X para luego
% aproximarla
[U,S,V] = svd(X,0);
X_1=zeros(m,n); % para la primera aproximacin
X_2=zeros(m,n); % para la segunda aproximacin
X_3=zeros(m,n); % para la tercera aproximacin
% primera aproximacin: suma slo las 5 primeras matrices componentes
% (de rango uno cada una) resultantes de la DVS
for i=1:5
X_1=X_1+S(i,i)*U(:,i)*V(:,i);
end
image(X_1)
r1 = rank(X_1);
title([Rango = int2str(r1)])
axis image, axis off
pause
% primera aproximacin: suma slo las 10 primeras matrices componentes
% (de rango uno cada una) resultantes de la DVS
for i=1:10
X_2=X_2+S(i,i)*U(:,i)*V(:,i);
end
image(X_2)
r2 = rank(X_2);
title([Rango = int2str(r2)])
axis image, axis off
pause
% primera aproximacin: suma slo las 25 primeras matrices componentes
% (de rango uno cada una) resultantes de la DVS
for i=1:25
X_3=X_3+S(i,i)*U(:,i)*V(:,i);
end
image(X_3)
r3 = rank(X_3);
title([Rango = int2str(r3)])
axis image, axis off
pause
% se calculan y grafican (logartmicamente) los valores singulares de la
% matriz original
sigma = diag(S);
semilogy(sigma,.)
title(Valores singulares)
2
Las imgenes resultantes se muestran abajo:
Figura 1: Grca de los valores singulares de la matriz X
Figura 2: Imagen original
3
En el primer cuadro, a pesar de ser de rango 5, ya es posible visualizar la gura de una persona; en el
segundo, de rango 10, la imagen es mucho ms clara, y en el tercero, la fotografa de Erds es dmuy cercana
a la original.
Podemos ver cmo, para obtener una aproximacin el de la matriz inicial correspondiente a la fotografa
(de rango completo, a saber 247), es suciente con una matriz de rango cercano al 10 % del original (en
nuestro caso, de rango 25).
Para sustentar esta idea, calculamos el error relativo de cada aproximacin (e
j
) de la forma
e
j
=

1
X
j

F
X
F
(1)
donde X
j
es la matriz aproximada con las primeras j matrices componentes y tal que rango(X
j
) = j.
As, e
5
= 0.1164, e
1
0 = 0.0872, e
2
5 = 0.0555. Notemos, pues, que incluso el error de la aproximacin de
menor rango es pequeo ( 10 %), mientras que el idneo (en el sentido de aceptable) 5 % se alcanza con
la aproximacin de rango 25.
4
(a) Primera aproximacin (b) Segunda aproximacin
(c) Tercera aproximacin
Figura 3: Tres aproximaciones de la imagen original de rangos escogidos arbitrariamente
5

You might also like