Used to apply the same operation to a stack of array elements. The only constraint on the function specified in fhandle is that given two differrent input arrays a1 and a2, if a1 and a2 have the same dimensions then the outputs b1 and b2 must have the same dimensions. For long operations shows progress information. A can have arbitrary dimension. Suppose A has size d1 x d2 ... x dn. Then for the purpose of this function A has dn elements, where A(:,:,...,i) is the ith element. This function then applies the operation in fhandle, with paramters given in varargin, to each element in A. The results are returned in the array B, of size f1 x f2 x ... x fk x dn. Each of the n element of B of the form B(:,:,...,i) is the the result of applying fhandle to A(:,:,...,i). A may also be a cell array, see the last example. This can be extremely useful. Suppose A is an MxNxR collection of R MxN images. Then "B = feval_arrays( A, @imresize, .5 )" resizes each of the R images in A by 1/2. B has size M/2 x N/2 X R. As another motivating example, suppose A is an MxNx3xR array of R MxN rgb images. Then "B = feval_arrays( A, @rgb2gray )" converts each of the R color images to a grayscale image. B has size M x N x R. A limitation of feval_arrays is that it does not pass state information to fhandle. For example, fhandle may want to know how many times it's been called. This can be overcome by saving state information inside fhandle using 'persistent' variables. For an example see imwrite2. INPUTS A - input array fhandle - operation to apply to each 'element' of A params - [varargin] parameters for each operation specified by fhandle OUTPUTS B - output array EXAMPLE B = feval_arrays( A, @rgb2gray ); % where A is MxNx3xR B = feval_arrays( A, @imresize, .5 ); % where A is MxNxR B = feval_arrays( A, @imnormalize ); % where A has arbitrary dims B = feval_arrays( A, @(x) {imresize(x{1},.5)} ); % resize each element in cell array DATESTAMP 25-Jan-2005 2:00pm See also FEVAL_IMAGES, IMWRITE2, PERSISTENT, TICSTATUS