arrayfun
Evaluates the function func on each element of the array m. Each element is passed into the function individually.
Syntax
R = arrayfun(func, input1)
R = arrayfun(func, input1, input2, ...)
R = arrayfun(..., 'uniformoutput', flag)
R = arrayfun(..., 'errorhandler', errorFunc)
[R1, ...] = arrayfun(...)
Inputs
- func
- Function to be evaluated.
- input1, input2, ...
- Array(s) to be operated on.
- flag
- Uniform output type which specifies the class of R. By default, flag is 1, with R being a matrix. If flag is 0, R will be a cell.
- errorFunc
- A function to be evaluated if func throws an error. errorFunc accepts an additional input argument err. err is a structure which contains the fields 'index', the index of the element that caused the error and 'message', the error message. The number of outputs of errorFunc must be the same as func's.
Outputs
- R
- Resulting output.
Examples
arrayfun('max', [1:5], [0 3 5 2 1])
R = [Matrix] 1 x 5
1 3 5 4 5
function z = my_func(a, b)
if (a > b)
z = a - b;
else
z = a+b;
end
end
m1 = [1:4; 2:5; 3:6];
m2 = [2 5 9 8; 5 2 6 7; 3 6 9 2];
R = arrayfun(@my_func, m1, m2)
R = [Matrix] 3 x 4
3 7 12 12
7 1 10 12
6 10 14 4
R = arrayfun(@(a, b) [a, b], '1234', 'abcd', 'uniformoutput', 0)
R =
{
[1,1] 1a
[1,2] 2b
[1,3] 3c
[1,4] 4d
}
function [z1, z2] = my_func(a, b)
z1 = a + b;
z2 = a*b;
end
[R1, R2] = arrayfun(@my_func, 1:5, 11:15)
R1 = [Matrix] 1 x 5
12 14 16 18 20
R2 = [Matrix] 1 x 5
11 24 39 56 75
function z = my_func(a)
z = a.a + str2num(a.b);
end
function z = my_error_func(err, a, b)
err.index
err.message
z = 10;
end
s(1).a = 1;
s(2).a = 2;
s(3).a = 3;
s(1).b = '1';
s(2).b = 2;
s(3).b = '3';
R = arrayfun(@my_func , s, 'errorhandler', @my_error_func)
ans = 2
ans = Error: invalid input in argument 1; must be string
R = [Matrix] 1 x 3
2 10 6