We encapsulate all c = 74 3D porosity images of porous cages into a data matrix A. We first flatten the g × g × g (g = 50) images into a set of raw vector representations {c 1 , c 2 , ..., c c }, all of which lie in the enormous space R g 3 . We compute the average 3D porosity image as c = 1 c c i=1 c i (visualized later in Fig. ). Now let a i := c i -c be the difference between the porosity image of cage i and the average porosity image. The c × g 3 data matrix A is then defined by assigning its ith row to be a T i . As there are many fewer cages than pixels in the 3D porosity images (c << g 3 ), the data matrix A is very wide (see Fig. .1).