Bell

From QETLAB
Jump to: navigation, search
Bell
Produces a Bell state

Other toolboxes required none
Related functions MaxEntangled
Function category Special states, vectors, and operators

Bell is a function that returns one of the four Bell states in 2-qubit space:

\(\displaystyle\begin{align*}|\phi_0\rangle = \frac{1}{\sqrt{2}}(|0\rangle\otimes|0\rangle + |1\rangle\otimes|1\rangle) & & & & |\phi_2\rangle = \frac{1}{\sqrt{2}}(|0\rangle\otimes|1\rangle + |1\rangle\otimes|0\rangle) \\ |\phi_1\rangle = \frac{1}{\sqrt{2}}(|0\rangle\otimes|0\rangle - |1\rangle\otimes|1\rangle) & & & & |\phi_3\rangle = \frac{1}{\sqrt{2}}(|0\rangle\otimes|1\rangle - |1\rangle\otimes|0\rangle) \\\end{align*}\)

Syntax

  • PHI = Bell()
  • PHI = Bell(IND)
  • PHI = Bell(IND,SP)
  • PHI = Bell(IND,SP,NRML)

Argument descriptions

  • IND (optional, default 0): The index of the Bell state (i.e., the subscript, from 0 to 3, of the Bell state that you would like, as indicated above).
  • SP (optional, default 0): A flag (either 1 or 0) indicating that PHI should or should not be sparse.
  • NRML (optional, default 1): A flag (either 1 or 0) indicating that PHI should or should not be scaled to have Euclidean norm 1. If NRML=0 then each entry of PHI is 0 or 1, so it has norm $\sqrt{2}$.

Examples

The following code generates a matrix whose columns are the four different Bell states:

>> [Bell(0),Bell(1),Bell(2),Bell(3)]
 
ans =
 
    0.7071    0.7071         0         0
         0         0    0.7071    0.7071
         0         0    0.7071   -0.7071
    0.7071   -0.7071         0         0

Source code

Click on "expand" to the right to view the MATLAB source code for this function.

  1. %%  BELL    Produces a Bell state
  2. %   This function has no required arguments.
  3. %
  4. %   PHI = Bell() is the Bell state (|0>|0> + |1>|1>)/sqrt(2)
  5. %
  6. %   This function has three optional arguments:
  7. %     IND (default 0)
  8. %     SP (default 0)
  9. %     NRML (default 1)
  10. %   
  11. %   PHI = Bell(IND,SP,NRML) produces one of the following four Bell states,
  12. %   depending on the value of IND:
  13. %     0: (|0>|0> + |1>|1>)/sqrt(2)
  14. %     1: (|0>|0> - |1>|1>)/sqrt(2)
  15. %     2: (|0>|1> + |1>|0>)/sqrt(2)
  16. %     3: (|0>|1> - |1>|0>)/sqrt(2)
  17. %   The Bell state is sparse if SP = 1 and is full if SP = 0. It is
  18. %   normalized to have Euclidean norm 1 if NRML = 1, and it is unnormalized
  19. %   (i.e., each entry in the vector is 0 or 1) if NRML = 0.
  20. %
  21. %   URL: http://www.qetlab.com/Bell
  22.  
  23. %   requires: iden.m, opt_args.m
  24. %   author: Nathaniel Johnston (nathaniel@njohnston.ca)
  25. %   package: QETLAB
  26. %   last updated: September 23, 2014
  27.  
  28. function phi = Bell(varargin)
  29.  
  30. % set optional argument defaults: ind=0, sp=0, nrml=1
  31. [ind,sp,nrml] = opt_args({ 0, 0, 1 },varargin{:});
  32.  
  33. % construct an identity matrix, whose columns will be the local vectors
  34. id = iden(2,sp);
  35. colmod = mod(floor(ind/2),2); % we do (mod 2) so that values of ind > 3 work too
  36.  
  37. % construct the Bell state
  38. phi = kron(id(:,1),id(:,1+colmod)) + ((-1)^ind)*kron(id(:,2),id(:,2-colmod));
  39. if(nrml == 1)
  40.     phi = phi/sqrt(2);
  41. end