FreeMat

- Main Page
- Related Pages

CELLFUN Appy a Function To Elements of a Cell Array

Section: Array Generation and Manipulations

# Usage

The `cellfun` function is used to apply a function handle (or anonymous function) to each element of a cell array and to collect the outputs into an array. The general syntax for its use is

       y = cellfun(fun, x)

where `x` is an N-dimensional array. In this case, each element of the output `y_i` is defined as `fun(x{i})`. You can also supply multiple arguments to `cellfun`, provided all of the arguments are the same size

       y = cellfun(fun, x, z, ...)

in which case each output `y_i` is defined as `fun(x{i},z{i},...)`. Note that unlike `arrayfun`, the `cellfun` function will allow for different types (if there are overloaded versions of the function `fun`) for each element.

If the function returns multiple outputs, then `arrayfun` can be called with multiple outputs, in which case each output goes to a separate array output

       [y1,y2,...] = cellfun(fun, x, z, ...)

The assumption is that the output types for each call to `fun` is the same across the inputs.

Finally, some hints can be provided to `cellfun` using the syntax

       [y1,y2,...] = cellfun(fun, x, z, ..., 'param', value, 'param', value)

where `param` and `value` take on the following possible values:

- `'UniformOutput'` - if the `value` is `true` then each output of `fun` must be a scalar, and the outputs are concatenated into an array the same size as the input arrays. If the `value` is `false` then the outputs are encapsulated into a cell array, with each entry in the cell array containing the call to `fun(x_i,z_i,...)`.
- `'ErrorHandler'` - in this case `value` is a function handle that gets called when `fun` throws an error. If `'ErrorHandler'` is not specified, then `arrayfun` allows the error to propogate (i.e., and exception is thrown).