IsUPB

From QETLAB
Revision as of 18:26, 21 October 2014 by Nathaniel (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
IsUPB
Determines whether or not a set of product vectors form a UPB

Other toolboxes required none
Related functions MinUPBSize
UPB
UPBSepDistinguishable
Function category Distinguishing objects

IsUPB is a function that determines whether or not a given set of product vectors forms an unextendible product basis (UPB).

Syntax

  • IU = IsUPB(U,V,W,...)

Argument descriptions

Input arguments

  • U,V,W,...: Matrices, each with the same number of columns as each other, whose columns are the local vectors of the supposed UPB.

Output arguments

  • IU: A flag (either 1 or 0) specifying that the set of vectors described by U,V,W,... is or is not a UPB.
  • WIT (optional): If IU = 0 then this is a cell containing local vectors for a product vector orthogonal to every member of the non-UPB described by U,V,W,... (thus, it acts as a witness to the fact that it really is not a UPB). If IU = 1 then WIT is meaningless.

Examples

The "Tiles" UPB

The following code verifies that the well-known "Tiles" UPB is indeed a UPB:

>> [u,v] = UPB('Tiles') % generate the local vectors of the "Tiles" UPB

u =

    1.0000    0.7071         0         0    0.5774
         0   -0.7071         0    0.7071    0.5774
         0         0    1.0000   -0.7071    0.5774


v =

    0.7071         0         0    1.0000    0.5774
   -0.7071         0    0.7071         0    0.5774
         0    1.0000   -0.7071         0    0.5774

>> IsUPB(u,v)

ans =

     1

However, if we remove the fifth vector from this set, then it is no longer a UPB:

>> [iu,wit] = IsUPB(u(:,1:4),v(:,1:4));
>> iu

iu =

     0

>> celldisp(wit) % display the witness
 
wit{1} =
 
     0
     0
     1

 
 
wit{2} =
 
    0.0000
    0.7071
    0.7071

Indeed, it is not difficult to verify that wit{1} is orthogonal to u(:,1) and u(:,2), and wit{2} is orthogonal to v(:,3) and v(:,4), so the first four columns of u,v do not specify a UPB.

Source code

Click here to view this function's source code on github.