| Contents | Index |
[A1,...,Am] = cellfun(func,C1,...,Cn)
[A1,...,Am] = cellfun(func,C1,...,Cn,Name,Value)
[A1,...,Am] = cellfun(func,C1,...,Cn) calls the function specified by function handle func and passes elements from cell arrays C1,...,Cn, where n is the number of inputs to function func. Output arrays A1,...,Am, where m is the number of outputs from function func, contain the combined outputs from the function calls. The ith iteration corresponds to the syntax [A1(i),...,Am(i)] = func(C{i},...,Cn{i}). The cellfun function does not perform the calls to function func in a specific order.
[A1,...,Am] = cellfun(func,C1,...,Cn,Name,Value) calls function func with additional options specified by one or more Name,Value pair arguments. Possible values for Name are 'UniformOutput' or 'ErrorHandler'.
Specify optional comma-separated pairs of Name,Value arguments, where Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.
A1,...,Am |
Arrays that collect the m outputs from function func. Each array A is the same size as each of the inputs C1,...,Cn. Function func can return output arguments of different classes. However, if UniformOutput is true (the default):
|
Compute the mean of each vector in cell array C.
C = {1:10, [2; 4; 6], []};
averages = cellfun(@mean, C)This code returns
averages =
5.5000 4.0000 NaNCompute the size of each array in C, created in the previous example.
[nrows, ncols] = cellfun(@size, C)
This code returns
nrows =
1 3 0
ncols =
10 1 0Create a cell array that contains strings, and abbreviate those strings to the first three characters. Because the output strings are nonscalar, set UniformOutput to false.
days = {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'};
abbrev = cellfun(@(x) x(1:3), days, 'UniformOutput', false)The syntax @(x) creates an anonymous function. This code returns
abbrev =
'Mon' 'Tue' 'Wed' 'Thu' 'Fri'Compute the covariance between arrays in two cell arrays C and D. Because the covariance output is nonscalar, set UniformOutput to false.
c1 = rand(5,1); c2 = rand(10,1); c3 = rand(15,1);
d1 = rand(5,1); d2 = rand(10,1); d3 = rand(15,1);
C = {c1, c2, c3};
D = {d1, d2, d3};
covCD = cellfun(@cov, C, D, 'UniformOutput', false)This code returns
covCD =
[2x2 double] [2x2 double] [2x2 double]Define and call a custom error handling function.
function result = errorfun(S, varargin)
warning(S.identifier, S.message);
result = NaN;
end
A = {rand(3)};
B = {rand(5)};
AgtB = cellfun(@(x,y) x > y, A, B, 'ErrorHandler', @errorfun, ...
'UniformOutput', false)arrayfun | cell2mat | function_handle | spfun

Explore how to use MATLAB to make advancements in engineering and science.
| © 1984-2012- The MathWorks, Inc. - Site Help - Patents - Trademarks - Privacy Policy - Preventing Piracy - RSS |