how to overcome undefined function sum.
Show older comments
throughput_E =@(t)Bmax*log2(1+p_fix(t)*gamma(t)/sum(p_fix(q,1,t-1).*gamma(t)));
overall_throughput_E = sum(sum(throughput_E));
If i run the code i am getting Undefined function 'sum' for input arguments of type 'function_handle'.
Error in overall_throughput_E = sum(sum(throughput_E));
4 Comments
KSSV
on 29 Dec 2017
define p_fix as a anonymous function and try.
Prabha Kumaresan
on 29 Dec 2017
Edited: Matt J
on 29 Dec 2017
KSSV
on 29 Dec 2017
:( what is p_fix.....show us this function.
Prabha Kumaresan
on 29 Dec 2017
Answers (1)
You need to give some sort of input to throughput_E in this line
sum(sum( throughput_E( t_input) ));
3 Comments
John D'Errico
on 29 Dec 2017
To amplify on what Matt said, and explain why there was a problem...
throughput_E is a function handle. It seems like it makes sense that you can sum the function, simply by putting it inside sum. But MATLAB does not understand your goal here. MATLAB is a very literal tool. The function sum looks at what you passed in. Sum recognizes only numeric inputs as candidates to be summable. It looks at throughput_E, and sees that it is NOT a number or vector or array of numbers. So sum just gives up and throws an error.
If you change things, so that throughput_E has an input as did Matt, then the result is now numeric. MATLAB evaluates the function at t_input, then passes the result to sum. All is good now.
Sometimes you really don't immediately have the input to throughput_E at the moment, but you want to define a new function that will take any input and sum the result, after going through throughput_E? Just create a NEW function, as I do here:
sum_of_throughput_E = @(inp) sum(sum(throughput_E(inp)));
So now you can use this new function as the summed result.
Prabha Kumaresan
on 29 Dec 2017
Edited: Walter Roberson
on 29 Dec 2017
Categories
Find more on Mathematics 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!