|
4 | 4 | % optical modes. We then write coherent states across them as |
5 | 5 | % |vec(alpha)> := |alpha_1>|alpha_2> ... |alpha_n>. For this class, we |
6 | 6 | % store coherent states by extracting the column vector vec(alpha) in |
7 | | - % C^n. Furthermore, any operator, M, that transforms mode annihilation |
8 | | - % operators as vec(b) = M*vec(a), then M transforms coherent states as |
9 | | - % |vec(beta)>_vec(b) = |M*vec(alpha)>_vec(a). |
| 7 | + % C^n. |
| 8 | + % |
| 9 | + % A linear optics system characterized by matrix M in C^{m x n} with |
| 10 | + % ||M||_infinity <= 1 acts as the quantum channel: |
| 11 | + % |
| 12 | + % Phi_{M,A->B}(|vec(alpha)><vec(beta)|_A) = <vec(beta)|vec(alpha)> |
| 13 | + % / (<M vec(beta)|M vec(alpha)>) * |M vec(alpha)><M vec(beta)|_B |
| 14 | + % |
| 15 | + % When M is an isometry, one can think of the transformation as a |
| 16 | + % replacement of mode creation operators vec(a^dagger) via |
| 17 | + % vec(b^dagger) = M vec(a^dagger) or equivalently |
| 18 | + % M^dagger*vec(b^dagger) = vec(a^dagger). |
| 19 | + % |
| 20 | + % Note the special case: |
| 21 | + % |
| 22 | + % Phi_{M,A->B}(|vec(alpha)><vec(alpha)|_A) = |
| 23 | + % |M*vec(alpha)><M*vec(alpha)|_A) |
10 | 24 | % |
11 | 25 | % See Also: Rotations Qudit |
12 | 26 | methods (Static) |
|
96 | 110 |
|
97 | 111 | function transMat = beamSplitter(transmittance) |
98 | 112 | % A function that constructs the unitary transition matrix on |
99 | | - % coherent states/annihilation operators when a beam splitter |
100 | | - % is applied to a two mode state (one on each input side of the |
101 | | - % beam splitter). The outputs are organized so that a |
102 | | - % transmittance of 1 results in the identity matrix. |
103 | | - % Furthermore, no global or relative phase shifts are applied |
104 | | - % to the output modes. |
| 113 | + % coherent states when a beam splitter is applied to a two mode |
| 114 | + % state (one on each input side of the beam splitter). The |
| 115 | + % outputs are organized so that a transmittance of 1 results in |
| 116 | + % the identity matrix. Furthermore, no global or relative phase |
| 117 | + % shifts are applied to the output modes. |
105 | 118 | % |
106 | 119 | % * transmittance: proportion of the intensity that is |
107 | 120 | % transmitted through the beam splitter without being |
|
117 | 130 |
|
118 | 131 | function transMat = singleInputBeamSplitter(transmittance) |
119 | 132 | % A function that constructs the isometry transition matrix on |
120 | | - % a coherent state/annihilation operator when a beam splitter |
121 | | - % is applied to a single input mode. This is useful for passive |
122 | | - % detector schemes like in BB84 where the signal must be split |
123 | | - % randomly into multiple detector setups. The outputs are |
124 | | - % ordered as transmitted portion then reflected portion. |
125 | | - % Furthermore, no global or relative phase shifts are applied |
126 | | - % to the output modes. |
| 133 | + % a coherent state when a beam splitter is applied to a single |
| 134 | + % input mode. This is useful for passive detector schemes like |
| 135 | + % in BB84 where the signal must be split randomly into multiple |
| 136 | + % detector setups. The outputs are ordered as transmitted |
| 137 | + % portion then reflected portion. Furthermore, no global or |
| 138 | + % relative phase shifts are applied to the output modes. |
127 | 139 | % |
128 | 140 | % * transmittance: proportion of the intensity that is |
129 | 141 | % transmitted through the beam splitter without being |
|
136 | 148 |
|
137 | 149 | function transMat = singleInputMultiBeamSpliter(probDist) |
138 | 150 | % A function that constructs the isometry transition matrix on |
139 | | - % a coherent state/annihilation operator when that splits the |
140 | | - % input across multiple output modes based on fractions of the |
141 | | - % intensity. This is useful for passive detector schemes like |
142 | | - % six-state where the signal must be split randomly into |
143 | | - % multiple detector setups. The outputs are ordered the same as |
144 | | - % the probability distribution. No global or relative phase |
145 | | - % shifts are applied to the output modes. |
| 151 | + % a coherent state when that splits the input across multiple |
| 152 | + % output modes based on fractions of the intensity. This is |
| 153 | + % useful for passive detector schemes like six-state where the |
| 154 | + % signal must be split randomly into multiple detector setups. |
| 155 | + % The outputs are ordered the same as the probability |
| 156 | + % distribution. No global or relative phase shifts are applied |
| 157 | + % to the output modes. |
146 | 158 | % |
147 | 159 | % * probDist: probability distribtion to distribute the beam |
148 | 160 | % into fractions of the orgininal intensity. |
|
190 | 202 | % Computes the inner product between two sets of coherent |
191 | 203 | % states. <coherentStatesA|coherentStatesB>. |
192 | 204 | % |
193 | | - % * coherentStatesA: nd array of complex coherent state |
| 205 | + % * coherentStatesA: An nd array of complex coherent state |
194 | 206 | % amplitudes. Takes the complex conjugate for the |
195 | 207 | % inner product. |
196 | | - % * coherentStatesB: nd array of complex coherent state |
| 208 | + % * coherentStatesB: An nd array of complex coherent state |
197 | 209 | % amplitudes. Must be the same size as coherentStatesA. |
198 | 210 | % Name-value arguments |
199 | 211 | % * combineModes(true): When true, each individual |
|
223 | 235 | % coherentInnerProduct(coherentStatesA,coherentStatesB)... |
224 | 236 | % ).^2). |
225 | 237 | % |
226 | | - % * coherentStatesA: nd array of complex coherent state |
| 238 | + % * coherentStatesA: An nd array of complex coherent state |
227 | 239 | % amplitudes. |
228 | | - % * coherentStatesB: nd array of complex coherent state |
| 240 | + % * coherentStatesB: An nd array of complex coherent state |
229 | 241 | % amplitudes. Must be the same size as coherentStatesA. |
230 | 242 | % Name-value arguments |
231 | 243 | % * combineModes (true): When true, each individual |
|
250 | 262 | % coherent states. The Fock states recieve the complex |
251 | 263 | % conjugate. <fockStates|coherentStates>. |
252 | 264 | % |
253 | | - % * fockStates: nd array of non-negative integers that |
| 265 | + % * fockStates: An nd array of non-negative integers that |
254 | 266 | % represent the number of photons in each mode. Takes the |
255 | 267 | % complex conjugate for the inner product. |
256 | | - % * coherentStates: nd array of complex coherent state |
| 268 | + % * coherentStates: An nd array of complex coherent state |
257 | 269 | % amplitudes. Must be the same size as fockStates. |
258 | 270 | % Name-value arguments |
259 | 271 | % * combineModes (true): When true, each individual inner |
|
280 | 292 | % tolerance, the result should be the same as |
281 | 293 | % abs(fockCoherentInnerProduct(fockStates,coherentStates)).^2 |
282 | 294 | % |
283 | | - % * fockStates: nd array of non-negative integers that |
| 295 | + % * fockStates: An nd array of non-negative integers that |
284 | 296 | % represent the number of photons in each mode. |
285 | | - % * coherentStates: nd array of complex coherent state |
| 297 | + % * coherentStates: An nd array of complex coherent state |
286 | 298 | % amplitudes. Must be the same size as fockStates. |
287 | 299 | % Name-value arguments |
288 | 300 | % * combineModes (true): When true, each individual probability |
|
309 | 321 | % given an input coherent state and dark count rate. |
310 | 322 | % |
311 | 323 | % Inputs: |
312 | | - % * coherentState: nd array of complex coherent state |
| 324 | + % * coherentState: An nd array of complex coherent state |
313 | 325 | % amplitudes. |
314 | | - % * darkCountRate (0): nd array that represents the probability |
315 | | - % that a no click event is transformed into a click event. |
316 | | - % The darkCountRate must have a compatible size for element |
317 | | - % wise operations with coherentState. |
| 326 | + % * darkCountRate (0): An nd array that represents the |
| 327 | + % probability that a no click event is transformed into a |
| 328 | + % click event. The darkCountRate must have a compatible size |
| 329 | + % for element wise operations with coherentState. |
318 | 330 | % |
319 | 331 | % see also mustBeCompatibleSizes |
320 | 332 | arguments |
|
351 | 363 | % example, [0.25;0.1] is mapped to [0.675;0.225;0.075;0.025]. |
352 | 364 | % |
353 | 365 | % Inputs: |
354 | | - % * probDetectorsClick: nd array of click probabilities for |
| 366 | + % * probDetectorsClick: An nd array of click probabilities for |
355 | 367 | % threshold detectors. |
356 | 368 | % |
357 | 369 | % Outputs: |
358 | | - % * probDetectorsClickPatterns: nd array with the same size |
| 370 | + % * probDetectorsClickPatterns: An nd array with the same size |
359 | 371 | % except 2^n columns where n was the previous number of |
360 | 372 | % columns. |
361 | 373 | arguments |
|
0 commit comments