source: liacs/la/opdr7/uitwerking.m@ 31

Last change on this file since 31 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 2.7 KB
Line 
1% == SVD case ==
2% laat commentaar zien
3echo on
4% pauzeer, om plaatjes weer te kunnen geven
5setpause = 1;
6
7% zie approx.m
8
9% 1) Voorbeeld 1
10[X, Y] = meshgrid(-5:1:5);
11A = (Y .* X.^2 - X.^2 - Y.^2 + 175);
12mesh(A);
13if ( setpause ); pause; end
14close all hidden
15
16% of als grijswaarde
17colormap(gray(256));
18image(A);
19if ( setpause ); pause; end
20close all hidden
21
22% berekenen van SVD met 2 benaderingen van A, die de grootste en twee
23% grooste eigenwaardes meenemen
24
25[U, S, V] = svd(A);
26
27A1 = approx(A,1);
28mesh(A1);
29if ( setpause ); pause; end
30close all hidden
31
32A2 = approx(A,2);
33mesh(A2);
34if ( setpause ); pause; end
35close all hidden
36
37% Verschillen tussen A en A1, A2
38B1 = A - A1;
39B2 = A - A2;
40
41mesh(B1);
42if ( setpause ); pause; end
43close all hidden
44
45mesh(B2);
46if ( setpause ); pause; end
47close all hidden
48
49% zie foutperc.m
50% fout tussen A en A1
51fout = foutperc(A,A1)
52% fout tussen A en A2
53fout = foutperc(A,A2)
54
55% 2)
56% plaatje opgeslagen in meisje.jpg (http://nies.liacs.nl:1860) (rechter
57% plaatje)
58
59A = imread('meisje.jpg', 'jpg');
60image(A);
61colormap(gray(256));
62if ( setpause ); pause; end
63close all hidden
64
65% naar floats om te kunnen berekenen
66A = double(A);
67
68for i=0:8
69 k = 2 ^ i;
70 T = approx(A,k);
71 fout = foutperc(A,T);
72 image(T);
73 colormap(gray(256));
74 title( sprintf('K waarden %d - fout %.3f%%', k, fout) );
75 if ( setpause ); pause; end
76 close all hidden
77end
78
79% fout percentage tabel
80% zoek de waardes 10,5,3,1 percent
81% dit is pittig zwaar, en duurt enkele minuten om uit te voeren
82for i=1:256
83 fouttabel(i,1) = i-1;
84 T = approx(A, (i-1));
85 fout = foutperc(A,T);
86 fouttabel(i,2) = fout;
87 if (fout < 1)
88 break;
89 end
90 [i, fout]
91end
92%
93% fouttabel
94
95% zie spaceperc.m
96% let op het percentage matrixposities nodig om een mxn matrix met k
97% eigenwaarden te benaderen. Je moet het percentage nog wel
98% vermenigvuldigen met het verschil in datatype per matrix element.
99
100for i=1:256
101 ruimtetabel(i,1) = i-1;
102 spacesave = spaceperc(A,i);
103 ruimtetabel(i,2) = spacesave;
104 [i, spacesave]
105end
106
107ruimtetabel
108
109plot(ruimtetabel(:,1), ruimtetabel(:,2),'.')
110grid on
111title( 'k waarde, percent matrix ruimte');
112% Dit is netjes linear
113if ( setpause ); pause; end
114close all hidden
115
116% 3)
117load spine;
118image(X);
119% mooie colormap, zie ook de handleiding
120colormap(bone);
121if ( setpause ); pause; end
122close all hidden
123
124A = double(X);
125% door de bovenstaande molen te halen levert op dat
126% fouttabel
127% 10% = 9
128% 5% = 20
129% 1% = 92
130
131% mooie manier om de fout en ruimte percentages weer te geven
132hold on
133plot(fouttabel(:,1), fouttabel(:,2),'r.')
134plot(ruimtetabel(:,1), ruimtetabel(:,2),'g.')
135legend('show')
136legend('fout','ruimte')
137xlabel('k waarde')
138ylabel('percent')
139hold off
140grid on
141axis([0,50,0,40])
142title( 'Plaatje analyse');
143if ( setpause ); pause; end
144close all hidden
145
Note: See TracBrowser for help on using the repository browser.