/
astrodata_final.m
106 lines (76 loc) · 2.08 KB
/
astrodata_final.m
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
function astrodata_final()
% astrodata_final()
%
% Run to re-create experiments on astronomical data
clear all
k=4;
a=fitsread('specarr_robpca_short.fits');
data=fitsread('specarr_robpca_short.fits','Image',1);
data = data(randperm(3485),:);
mean=zeros(1,134);
for i=1:length(data)
data(i,:)=data(i,:)/median(data(i,:));
mean = mean + data(i,:);
end
mean = mean/3485;
data=data-repmat(mean,3485,1);
[numpts,n]=size(data);
[initvecs, initvals ] = pca_initialize_random_orthogonal(k,n);
SBSP=initvecs;
p=1;
d=4;
re_pca=rerpca(data,d);
[p_angles1R,iterations,U3]=threeR(n,k,data,initvecs,SBSP,0);
[p_angles1R,iterations,U3_reg]=three(n,k,data,initvecs,SBSP,0);
p = panel();
p.pack(3,4);
p.de.margin = 3;
for i=1:4
p(1,i).select()
%subplot(3,4,i);
plot(a,re_pca(:,i));
xlim([min(a), max(a)]);
ylim([-.5,.5]);
set(findall(gca, 'Type', 'Line'),'LineWidth',2,'Color','blue');
if i > 1
set(gca, 'xtick', [], 'ytick', []);
else
set(gca, 'xtick', []);
end
end
%set(gca,'xaxisLocation','top')
p(1,1).title('\fontsize{15} First eigenspectrum');
p(1,2).title('\fontsize{15} Second eigenspectrum');
p(1,3).title('\fontsize{15} Third eigenspectrum');
p(1,4).title('\fontsize{15} Fourth eigenspectrum');
p(1,1).ylabel('RE-PCA');
%p(1,1).margintop = 1122;
p.margintop = 10;
for i=1:4
p(2,i).select()
%subplot(3,4,i+4)
plot(a,U3_reg(:,i))
xlim([min(a), max(a)])
ylim([-.5,.5]);
set(findall(gca, 'Type', 'Line'),'LineWidth',2,'Color','blue');
if i > 1
set(gca, 'xtick', [], 'ytick', []);
else
set(gca, 'xtick', []);
end
end
p(2,1).ylabel('Online PCA');
for i=1:4
p(3,i).select()
%subplot(3,4,i+8)
plot(a,U3(:,i))
set(findall(gca, 'Type', 'Line'),'LineWidth',2,'Color','blue');
xlim([min(a), max(a)])
ylim([-.5,.5]);
if i > 1
set(gca, 'xtick', [], 'ytick', []);
else
set(gca, 'xtick', []);
end
end
p(3,1).ylabel('Robust Online PCA');