/
ApplySpsdPT.m
35 lines (28 loc) · 861 Bytes
/
ApplySpsdPT.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
function [AaPT, GAaPT, PAaPT] = ApplySpsdPT(AA, BB, r)
Symm = @(M) (M + M') / 2;
N1 = length(AA);
[C1, G1, P1] = SpsdMean(AA, r);
[C2, G2, P2] = SpsdMean(BB, r);
[O1, ~, O2] = svd(G1' * G2);
G2 = G2 * O2 * O1';
P2 = G2' * C2 * G2;
PAA{N1} = [];
GAA{N1} = [];
for ii = 1 : N1
Ci = Symm(AA{ii});
[Gi, ~] = eigs(Ci, r);
[Oi, ~, OWi] = svd(Gi' * G1);
Gi = Gi * Oi * OWi';
Ti = Gi' * Ci * Gi;
GAA{ii} = Gi;
PAA{ii} = Symm(Ti);
end
PAaPT = ApplySpdPT (PAA, [], P1, P2);
GAaPT = ApplyGrassmanPT(GAA, [], G1, G2);
AaPT{N1} = [];
for ii = 1 : N1
mGAPTi = GAaPT{ii};
mPAPTi = PAaPT{ii};
AaPT{ii} = mGAPTi * mPAPTi * mGAPTi';
end
end