how can you pass values to variables in an an array of functions?

2 views (last 30 days)
I am trying to make a movie of the solutions to the heat equation for various values of a parameter in the coefficients . I want to create an array for the fourier coefficients of the solution. How can I define an 'array function' ? does this idea exist.
apologies if theis is a duplicate question. couldn't find this answer anywhere.
  6 Comments
Leonard
Leonard on 22 Mar 2014
what if the function which defined each cell was more complicated than an exponent?
so basically passing a value to a parameter (variable) in multiple cells in an array is something everyone should avoid?
Jan
Jan on 22 Mar 2014
@Leonard: If you have a more complicated function, you create a function file, which can be as complicated as you want.

Sign in to comment.

Answers (1)

per isakson
per isakson on 22 Mar 2014
Edited: per isakson on 22 Mar 2014
Playing with anonymous functions in combination with cellfun
fh{1}=@(x) x.*x;
fh{2}=@(x) x.*x.*x;
fh{3}=@(x) x.*x.*x.*x;
fh{4}=@(x) sin(x);
fh{5}=@(x) cos(x);
foo = @(z) cellfun( @(f,x) f(x), fh, repmat({z},size(fh)), 'uni', false);
foo(2)
returns
ans =
[4] [8] [16] [0.9093] [-0.4161]
However, those are cell arrays. Matlab doesn't support ordinary arrays of anonymous functions.
.
Or a little better
foo = @(z) cellfun( @(f,x) f(x), fh, repmat({z},size(fh)), 'uni', true);
foo(2)
returns
ans =
4.0000 8.0000 16.0000 0.9093 -0.4161
which is an array of doubles.
.
I guess that what you want is a Functional programming languages
  3 Comments
per isakson
per isakson on 23 Mar 2014
Edited: per isakson on 23 Mar 2014
An array with ten identical functions might not be useful.
However, anonymous functions are powerful and it takes some experiments to learn how to use them. "[...] any votes on that idea?" I vote for keeping the post. I contributed an experiment.
David Young
David Young on 24 Mar 2014
Yes, building the 10 anonymous functions is being overcomplicated. Almost certainly you can do what you want just by passing vector arguments to ordinary functions. I'd say keep the post - there are many less interesting and less useful threads here.

Sign in to comment.

Categories

Find more on Creating and Concatenating Matrices in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!