N-Dimensional Spatial Transformations
You can perform N-D geometric transformations using the tformarray function. You can also use tformarray to perform
      mixed-dimensional transformations, in which the input and output arrays do not have the same
      dimensions. The output can have either a lower or higher number of dimensions than the input.
      For example, if you are sampling 3-D data on a 2-D slice or manifold, the input array might
      have a lower dimensionality. The output dimensionality might be higher, for example, if you
      combine multiple 2-D transformations into a single 2-D to 3-D operation.
Before using the tformarray function, prepare the input arguments
      required to perform the geometric transformation.
- Create the spatial transformation using the - maketformfunction. If you create the spatial transformation from a matrix,- maketformexpects the matrix to be in the postmultiply convention.
- Create the resampling structure using the - makeresamplerfunction. A resampler structure defines how to interpolate values of the input array at specified locations. For example, you could specify your own separable interpolation kernel, build a custom resampler around the- interp2or- interp3functions, or even implement an advanced antialiasing technique. The resampling structure also controls the edge behavior when interpolating.
Next, apply the geometric transformation to an image using the
        tformarray function, specifying the spatial transformation structure
      and the resampling structure. You can also transform individual points and lines to explore
      the geometric effects of a transformation. Use the tformfwd and tforminv functions to perform forward and
      inverse transformations, respectively.
This example uses tformarray to perform a projective transformation
      of a checkerboard image, and makeresampler to create a resampling
      structure with a standard bicubic interpolation method.
I = checkerboard(20,1,1); figure imshow(I) T = maketform("projective",[1 1; 41 1; 41 41; 1 41], ... [5 5; 40 5; 35 30; -10 30]); R = makeresampler("cubic","circular"); J = tformarray(I,T,R,[1 2],[2 1],[100 100],[],[]); figure imshow(J)

The makeresampler and tformarray functions
      enable you to control many aspects of the transformation. For example, note how
        tformarray created an output image that is larger than the size of the
      original image. Further, notice that the transformed image appears to contain multiple copies
      of the original image. This is accomplished by specifying a padding method in the resampling
      structure that extends the input image by repeating the pixels in a circular pattern.