How to calculate the integral of the complicated functions of function handles in a cell?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
smashing
am 1 Apr. 2014
Bearbeitet: Image Analyst
am 1 Apr. 2014
Hi, I stuck for two days. I don't know how to calculate the integral of the sum of function handles in a cell. Please see the below examples:
f{1} = @(x) x;
f{2} = @(x) x^2;
g = @(x) sum(cellfun(@(y) y(x), f));
integral(@(x) g, -3,3);
Error: Input function must return 'double' or 'single' values. Found 'function_handle'.
PS: please don't change the formula, because this is just an example. My real problem is far more complicated than this. It has log and exp of this sum (integral(log(sum), -inf, inf)). So I can't break them up to do the integral individually and sum the integrals.I need to use sum(cellfun). Thank you.
Version: Matlab R2012a
Can anyone help me? Really appreciate.
2 Kommentare
Akzeptierte Antwort
Azzi Abdelmalek
am 1 Apr. 2014
f{1} = @(x) x;
f{2} = @(x) x.^2;
g=@(x) f{1}(x)+f{2}(x)
integral(@(x) g(x), -3,3)
3 Kommentare
Azzi Abdelmalek
am 1 Apr. 2014
Bearbeitet: Azzi Abdelmalek
am 1 Apr. 2014
Maybe there is better. for the moment I have one solution using eval
f{1} = @(x) x;
f{2} = @(x) x.^2;
n=numel(f)
d=['g=@(x)' sprintf('f{%d}(x)+',1:n)]
d(end)=[]
eval(d)
integral(@(x) g(x), -3,3)
Weitere Antworten (1)
Sean de Wolski
am 1 Apr. 2014
Bearbeitet: Sean de Wolski
am 1 Apr. 2014
Here's a method that scales:
f{1} = @(x) x;
f{2} = @(x) x.^2;
f{3} = @(x) exp(x)-log(x);
I = sum(cellfun(@(fun)integral(fun,-3,3),f))
Instead of using cellfun to evaluate the functions, use it to evaluate the integral and sum the integrals as Patrik suggested above.
Note you need to vectorize the functions (. before /*^)
3 Kommentare
Sean de Wolski
am 1 Apr. 2014
Huh?
cellfun(@(fun)integral(fun,-3,3),f)
Evaluates the integral over the range for each function in funs. Do with this info as you wish!
Azzi Abdelmalek
am 1 Apr. 2014
Smashing, you have to be clear, your question was about the sum. If there is something else, please edit your question and make it precise.
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!