-
Notifications
You must be signed in to change notification settings - Fork 0
/
sicQubits.m
116 lines (91 loc) · 1.65 KB
/
sicQubits.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
107
108
109
110
111
112
113
114
115
116
function A = sicQubits(n,q)
d=2^n;
A = [];
[M] = permn([1 2 3 4], n);
ss = size(M);
% s{1} = [1 0;0 1];
% s{2} = [1 0; 0 -1];
% s{3} = [0 1;1 0];
% s{4} = [0 -1i;1i 0];
W =[ 1.0000 + 0.0000i 0.0000 + 0.0000i;
-0.5774 + 0.0000i -0.8165 + 0.0000i;
-0.2887 - 0.5000i 0.8165 + 0.0000i;
-0.2887 + 0.5000i 0.8165 + 0.0000i]
% W = [1 0;
% 0 1;
% 1/sqrt(2) 1/sqrt(2);
% 1/sqrt(2) -1/sqrt(2);
% 1/sqrt(2) 1i/sqrt(2);
% 1/sqrt(2) -1i/sqrt(2)];
for i=1:4
v= W(i,:);
s{i} = v'*v;
end
A = [];
for ii=1:q
if ii == 1
U = eye(2);
else
X = (randn(2) + 1i*randn(2))/sqrt(2);
[Q,R] = qr(X);
R = diag(diag(R)./abs(diag(R)));
U = Q*R;
end
for k=1:length(s)
p{k} = U'*s{k}*U;
end
for i=1:ss(1)
pos = M(i,:);
m=1;
for ii=1:n
m=kron(m,p{pos(ii)});
end
v= reshape(m,[1 d^2]);
A = [A; v];
end
end
% figure(1)
% imagesc(abs(AA))
% W = [1 0;
% 1/sqrt(2) 1/sqrt(2);
% 1/sqrt(2) exp(1i*4*pi/3)/sqrt(2);
% 1/sqrt(2) exp(-1i*4*pi/3)/sqrt(2)];
%
% r= 1/sqrt(2);
% t=sqrt(1-r^2);
% W = [1 0;
% r t;
% r t*exp(1i*4*pi/3);
% r t*exp(-1i*4*pi/3)];
%
% G = zeros(2);
% for i=1:4
% v = W(i,:);
% if i==1
% yo=1;
% else
% yo = 2/3;
% end
% m = yo*v'*v;
% M{i} = m;
% G = m + G;
% end
%
% R=[];
% for i=1:4
% Q = G^(-1/2)*M{i}*G^(-1/2);
% P{i}=Q;
% v = primaryEigenvector(Q);
% R = [R;transpose(v)];
% end
%
% T=zeros(2);
% for i=1:4
% T= P{i}+T;
% end
%
% abs(R)
% R
%
% figure(134)
% imagesc(abs(R*R').^2);