Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
%% exercise 4.1.7
% Digits to include in analysis (to include all, n = 1:10);
n = [1];
%% Load data
cdir = fileparts(mfilename('fullpath'));
load(fullfile(cdir,'../Data/zipdata.mat'));
% Extract digits
X = traindata(:,2:end);
y = traindata(:,1);
classNames = {'0';'1';'2';'3';'4';'5';'6';'7';'8';'9';'10'};
classLabels = classNames(y+1);
% Remove digits that are not to be inspected
j = ismember(y, n);
X = X(j,:);
classLabels = classLabels(j);
classNames = classNames(n+1);
y = cellfun(@(str) find(strcmp(str, classNames)), classLabels)-1;
%% Compute mean, standard deviations, and covariance matrix
mu = mean(X);
s = std(X);
S = cov(X);
%% Generate 10 images with same mean and standard deviation
Xgen = normrnd(repmat(mu,10,1), repmat(s,10,1));
%% Plot images generated using the Normal distribution
mfig('Digits: 1-D Normal');
for k = 1:10
subplot(2,5,k);
I = reshape(Xgen(k,:), [16,16])';
imagesc(I);
axis image off
end
colormap(1-gray);
%% Generate 10 images with same mean and covariance matrix
Xgen = mvnrnd(mu, S, 10);
%% Plot images generated using the Normal distribution
mfig('Digits: Multivariate Normal');
for k = 1:10
subplot(2,5,k);
I = reshape(Xgen(k,:), [16,16])';
imagesc(I);
axis image off
end
colormap(1-gray);