bbindex

This function is not yet fully documented. This is a transcript of the text-formatted help.

bbindex   Create a reordering black-box operator
   BB=bbindex creates an operator for jobs normally
   handled by indexing. Below we show how the column-vector
   X corresponds to the product B=bbmult(BB,X).

   BB=bbindex(INX1)
     Reorder (permute) elements. X must have exactly length(INX1)
     elements, which makes the product equivalent to B=X(INX1).

     If P is a permutation matrix, an equivalent operator may be
     constructed as BB=bbindex(P*(1:size(P,2))').

   BB=bbindex(INX1,DIM1)
     Same as above, except X has DIM1 elements.

   BB=bbindex(INX1,DIM1,INX2,DIM2)
     Take elements of a vector with DIM1 elements and move them
     to specific positions in a vector with DIM2 elements.

     This is equivalent to the line:
     B=zeros([DIM2,1]); B(inx2)=X(inx1);

   INX1 and INX2 can be index vectors or the string ':'.

   If INX2 contains an index several times, then the default behavior
   is to keep the last occurence. If this is undesired the following
   form may be used:
     BB=bbindex(INX1,DIM1,INX2,DIM2,'sum')
   This will add the elements refered to multiple times.

   It is possible to handle hypercubes. If H1 is a hypercube of
   dimension DIM1, then we may extract another hypercube as follows:
     H2=zeros(DIM2);
     H2(dst1,dst2,...)=H1(src1,src2,...);

   The same effect could be accomplished by bbindex:
     BB=bbindex({src1,src2,...},DIM1,{dst1,dst2,...},DIM2);
     H2=reshape(BB*H1(:),DIM2);

   See also bbredim, bbmult.