Exercici extra
Una imatge en blanc i negre es representa com una matriu de nombres enters 0 i 255, un per cada pixel de la imatge. El valor 0 correspon al color negre i el 255 al blanc. Tots els valors intermedis corresponen als diferents valors de l'escala de grisos.
Considerem la següent matriu
: a) Calculeu el rang d'aquesta matriu.
b) Trobeu una base de l'espai generat per les columnes de la matriu. Anomenem B a la matriu que té per columnes els vectors d'aquesta base.
c) Trobeu una matriu C tal que
. d) Per matrius de rang petit, emmagatzemar B i Csuposa un estalvi d'espai en memòria respecte del que ocupa la matriu A, i aquesta última matriu es pot reconstruir a partir del producte de les dues anteriors. Suposant que cadascun dels elements d'aquestes matrius ocupen 1 byte, calculeu aquest estalvi d'espai.
Nota: podeu visualitzar la imatge corresponent a una matriu amb la funció imshow().
A = [255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;
255 255 0 0 0 255 0 0 255 255 255 0 0 255 0 0 0 255 0 0 255 255 255;
255 255 0 255 255 255 0 255 0 255 0 255 255 255 0 255 255 255 0 255 0 255 255;
255 255 0 255 255 255 0 255 0 255 0 255 255 255 0 255 255 255 0 255 0 255 255;
255 255 0 0 0 255 0 0 255 255 255 0 255 255 0 0 0 255 0 0 255 255 255;
255 255 0 255 255 255 0 255 255 255 255 255 0 255 0 255 255 255 0 255 0 255 255;
255 255 0 255 255 255 0 255 255 255 255 255 0 255 0 255 255 255 0 255 0 255 255;
255 255 0 0 0 255 0 255 255 255 0 0 255 255 0 0 0 255 0 0 255 255 255;
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255;
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255]
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
255 255 0 0 0 255 0 0 255 255 255 0 0 255 0 0 0 255 0 0 255 255 255
255 255 0 255 255 255 0 255 0 255 0 255 255 255 0 255 255 255 0 255 0 255 255
255 255 0 255 255 255 0 255 0 255 0 255 255 255 0 255 255 255 0 255 0 255 255
255 255 0 0 0 255 0 0 255 255 255 0 255 255 0 0 0 255 0 0 255 255 255
255 255 0 255 255 255 0 255 255 255 255 255 0 255 0 255 255 255 0 255 0 255 255
255 255 0 255 255 255 0 255 255 255 255 255 0 255 0 255 255 255 0 255 0 255 255
255 255 0 0 0 255 0 255 255 255 0 0 255 255 0 0 0 255 0 0 255 255 255
255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255
Trobem una base de l'espai generat per les columnes d'A.
B = colspace(sym(A))
B =

Amb la matriu B, resolem m sistemes lineals, un per cadascuna de les columnes de la matriu A, i d'aquesta manera obtenim la matriu C,
C = B\sym(A)
C =

Comprovem que el resultat és correcte:
Per tant, emmagatzemar B i Csuposa gairebé un estalvi del 20% en memòria respecte el que costa d'emmagatzemar A.
imshow(A,'InitialMagnification','fit')
Per últim, val la penar comentar que C és molt semblant a A. La diferència és que Cno té files repetides.
imshow(double(C),'InitialMagnification','fit')
Exercici: Fer un exemple similar per les lletres de l'ETSEIB.
© Numerical Factory 2020 (by M.A. Andreu)