Advantages and disadvantages
BBTools assumes that linear transformations are applied by creating an
operator and applying it to the data, which has the form of a vector.
There are several advantages with this approach:
- The implementation of an operator is separated from its invokation. This allows
one to use standard routines and concentrate on the modelling problem
(i.e. creating the operator) rather than the algorithms required for their solution.
- Hypercubes are treated the same way as any kind of data. Therefore, BBTools does not
care if a vector represents a rectangular image, a round one
(see demos), or one with holes.
- Algorithms can be closer to their "text-book" versions than what is normally seen in
practical code. This speeds up development, makes it relatively easy to analyze an algorithm,
and facilitates debugging.
- The creation of "the adjoint operation" (i.e. computing
A'*x
) only
needs to be considered at the level of fundamental building-blocks. Operators build
from these automatically supports this operation.
The downside is that it is necessary to track of the dimensions of the hypercube
manually when an operator is created. Functions that create operators corresponding to actions
on a hypercube (e.g. bbconvn) should have the dimension of the input
and output as argument and result.
Matrix CategoriesHypercubes as Operators![](b_next.gif)