This looks like a useful helper-function to me. I have what I hope is a complementary helper-function
http://www.mathworks.com/matlabcentral/fileexchange/28255 that can be used when you want to apply a function to vectors along a dimension, rather than (potentially higher dimensional) arrays perpendicular to that dimension.
To clarify the differences, with a 3d array:
r = randn(4,4,4);
the second of the four elements returned by:
n = apply(@norm, r, 3)
gives the matrix norm of the second matrix:
norm(r(:,:,2)
where matrices are stacked in the third dimension.
In contrast,
n = dimfunc(@norm, r, 3)
gives you a 4-by-4 matrix of the vector norms, for vectors running along the third dimension, e.g. element n(2,3) equals:
norm(squeeze(r(2,3,:)))
I hope that both functions will be useful for simplifying code to handle nD arrays.