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.