Inverse every 2D matrix slice (the first two dimensions) for multi-dimensional array M:
M(:,:,p,q,...) * X(:,:,p,q,...) = repmat(eye(m),[1,1,p,q,...]),
where input M is a N-D array (m x m x [p x q x ...]), for all possible m=1,2,3,...
and optional higher dimensions. Output X array has the same size as M.
This program works GREAT! It greatly improved the speed of my codes that require inversion of matrices of functions. I use it with mtimesx. Thanks for your effort on this code, Xiaodong.
Thank you for your comment on http://www.mathworks.com/matlabcentral/fileexchange/8773-multiple-matrix-multiplications-with-array-expansion-enabled
Your function is quite useful as it is. However, to be compatible with MULTIPROD, and to meet the requirements to be an ARRAYLAB function, it should work with any block array of square matrices, not only with those containing square matrices along their first two dimensions. Thus, it should have a syntax similar to MULTITRANSP (provided together with MULTIPROD).