1 | % == SVD case ==
|
---|
2 | % laat commentaar zien
|
---|
3 | echo on
|
---|
4 | % pauzeer, om plaatjes weer te kunnen geven
|
---|
5 | setpause = 1;
|
---|
6 |
|
---|
7 | % zie approx.m
|
---|
8 |
|
---|
9 | % 1) Voorbeeld 1
|
---|
10 | [X, Y] = meshgrid(-5:1:5);
|
---|
11 | A = (Y .* X.^2 - X.^2 - Y.^2 + 175);
|
---|
12 | mesh(A);
|
---|
13 | if ( setpause ); pause; end
|
---|
14 | close all hidden
|
---|
15 |
|
---|
16 | % of als grijswaarde
|
---|
17 | colormap(gray(256));
|
---|
18 | image(A);
|
---|
19 | if ( setpause ); pause; end
|
---|
20 | close 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 |
|
---|
27 | A1 = approx(A,1);
|
---|
28 | mesh(A1);
|
---|
29 | if ( setpause ); pause; end
|
---|
30 | close all hidden
|
---|
31 |
|
---|
32 | A2 = approx(A,2);
|
---|
33 | mesh(A2);
|
---|
34 | if ( setpause ); pause; end
|
---|
35 | close all hidden
|
---|
36 |
|
---|
37 | % Verschillen tussen A en A1, A2
|
---|
38 | B1 = A - A1;
|
---|
39 | B2 = A - A2;
|
---|
40 |
|
---|
41 | mesh(B1);
|
---|
42 | if ( setpause ); pause; end
|
---|
43 | close all hidden
|
---|
44 |
|
---|
45 | mesh(B2);
|
---|
46 | if ( setpause ); pause; end
|
---|
47 | close all hidden
|
---|
48 |
|
---|
49 | % zie foutperc.m
|
---|
50 | % fout tussen A en A1
|
---|
51 | fout = foutperc(A,A1)
|
---|
52 | % fout tussen A en A2
|
---|
53 | fout = foutperc(A,A2)
|
---|
54 |
|
---|
55 | % 2)
|
---|
56 | % plaatje opgeslagen in meisje.jpg (http://nies.liacs.nl:1860) (rechter
|
---|
57 | % plaatje)
|
---|
58 |
|
---|
59 | A = imread('meisje.jpg', 'jpg');
|
---|
60 | image(A);
|
---|
61 | colormap(gray(256));
|
---|
62 | if ( setpause ); pause; end
|
---|
63 | close all hidden
|
---|
64 |
|
---|
65 | % naar floats om te kunnen berekenen
|
---|
66 | A = double(A);
|
---|
67 |
|
---|
68 | for 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
|
---|
77 | end
|
---|
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
|
---|
82 | for 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]
|
---|
91 | end
|
---|
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 |
|
---|
100 | for i=1:256
|
---|
101 | ruimtetabel(i,1) = i-1;
|
---|
102 | spacesave = spaceperc(A,i);
|
---|
103 | ruimtetabel(i,2) = spacesave;
|
---|
104 | [i, spacesave]
|
---|
105 | end
|
---|
106 |
|
---|
107 | ruimtetabel
|
---|
108 |
|
---|
109 | plot(ruimtetabel(:,1), ruimtetabel(:,2),'.')
|
---|
110 | grid on
|
---|
111 | title( 'k waarde, percent matrix ruimte');
|
---|
112 | % Dit is netjes linear
|
---|
113 | if ( setpause ); pause; end
|
---|
114 | close all hidden
|
---|
115 |
|
---|
116 | % 3)
|
---|
117 | load spine;
|
---|
118 | image(X);
|
---|
119 | % mooie colormap, zie ook de handleiding
|
---|
120 | colormap(bone);
|
---|
121 | if ( setpause ); pause; end
|
---|
122 | close all hidden
|
---|
123 |
|
---|
124 | A = 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
|
---|
132 | hold on
|
---|
133 | plot(fouttabel(:,1), fouttabel(:,2),'r.')
|
---|
134 | plot(ruimtetabel(:,1), ruimtetabel(:,2),'g.')
|
---|
135 | legend('show')
|
---|
136 | legend('fout','ruimte')
|
---|
137 | xlabel('k waarde')
|
---|
138 | ylabel('percent')
|
---|
139 | hold off
|
---|
140 | grid on
|
---|
141 | axis([0,50,0,40])
|
---|
142 | title( 'Plaatje analyse');
|
---|
143 | if ( setpause ); pause; end
|
---|
144 | close all hidden
|
---|
145 |
|
---|