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.
Comment only
09 Apr 2008
Keith Bensar
Good for clear code but doesn't increase speed.
28 Sep 2007
Marc Cott
Excellent tool.
20 Sep 2007
Jeremy Spear
Examples worked fine. I'll refine rating after error checking and documentation completed.
20 Sep 2007
Jos x@y.z
Do not waste bandwidth with something unfinished ...