Arrayfun with multiple variable?

56 views (last 30 days)
MementoMori
MementoMori on 19 Apr 2022
Edited: Stephen23 on 19 Apr 2022
Hi, probably this question has already received answers but what I found don't solve my problem.
I know that I have a function that requires one input i can use arrayfun like this:
A=arrayfun(@functionExample, input1);
But if I have a function that requires more than one input how can I do?
Thanks

Answers (2)

Voss
Voss on 19 Apr 2022
Two inputs:
A=arrayfun(@(x,y)functionExample(x,y), input1, input2);
Three inputs:
A=arrayfun(@(x,y,z)functionExample(x,y,z), input1, input2, input3);
And so on.
  3 Comments
MementoMori
MementoMori on 19 Apr 2022
Is this caused by varargin in the function "functionExample"
Stephen23
Stephen23 on 19 Apr 2022
It is not required to use anonymous functions, a simple function handle works with any number of inputs:
V = arrayfun(@max,[1,2,3],[0,9,0])
V = 1×3
1 9 3

Sign in to comment.


Stephen23
Stephen23 on 19 Apr 2022
Edited: Stephen23 on 19 Apr 2022
"But if I have a function that requires more than one input how can I do?"
ARRAYFUN already works with any number of input arrays:
fnh = @(varargin)sum([varargin{:}]); % test function, any number of inputs
arrayfun(fnh,[1,2,3])
ans = 1×3
1 2 3
arrayfun(fnh,[1,2,3],[4,5,6])
ans = 1×3
5 7 9
arrayfun(fnh,[1,2,3],[4,5,6],[7,8,9])
ans = 1×3
12 15 18

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!