how can you pass values to variables in an an array of functions?
Show older comments
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
Jan
on 22 Mar 2014
What does "array function" mean? What have you tried already and which explicit problems occur?
dpb
on 22 Mar 2014
I was puzzled, too, Jan. I can't envision why there would be a problem in doing what OP asks about with just "ordinary" arrays which are passed to functions by simply placing the array name in the argument list...
David Young
on 22 Mar 2014
Yes, I think you're right that you're missing the simple basis of arrays, functions and variables. A run through the initial tutorials will help a lot. For example you can write
x = 2;
x.^[2 3]
to compute your example. I suspect that using the symbolic toolbox is highly confusing at this stage - it's not needed for numerical computations.
Leonard
on 22 Mar 2014
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.
Answers (1)
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.
.
3 Comments
Leonard
on 22 Mar 2014
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
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.
Categories
Find more on Matrix Indexing 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!