A binary tensor may also be referred to as a 3D matrix of zeros and non-zeros or a 3D logical array. binaryTensorVoxel will draw cubes where there are non-zero entries in a tensor and leave vacancies where there are zeros. A simple use case example is
t = round(rand(3,3,3)); % zeros and ones
The thumbnail image for this File Exchange entry was drawn by applying binaryTensorVoxel to a 3D cellular automaton.
Hey Paul, GREAT idea.
You're gonna hate me for this though: it really slows down for large matrices.
The big speed hit comes from multiple calls to patch() within a loop.
I put together a more vectorised version that pre-calculates vertices/faces, then just calls patch the once. Here it is (all squashed up) below. It results in only one patch object, but it is ~1000x faster for a 20x20x20 binary matrix.