How to calculate number of function evaluation used?
14 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
NUR ZAFIRAH MOHD SIDEK
am 20 Jun. 2017
Bearbeitet: Tamas Kis
am 23 Dez. 2022
Hi guys, can some one help me to solve my problem?
i've be facing difficulty to find the number of function evaluation. let's say that i have f(x)=x^3+x^2-2 with initial value of x(0)=1.5
i want to calculate x(n+1)=x(n)-(f(x(n)/fprime(x(n))) until n=5
thus, i want to calculate how many time of f(x(n)) have been use until n=5. but if the first iteration has use f(x(1)) then the second iteration also use f(x(1)), it is considered as we only use f(x(1)) one time only.
can someone help me
2 Kommentare
Akzeptierte Antwort
Steven Lord
am 20 Jun. 2017
If you're using release R2017a or later you could use memoizedFunction. Once you've used memoizedFunction to solve the problem, call stats on it to determine how many times and with which inputs it was called.
3 Kommentare
Steven Lord
am 21 Jun. 2017
Yes, that's how I would do it. The first time you call the function with a new set of inputs, that increments TotalMisses. Each subsequent time you call the function with inputs that are already in the cache, that increments TotalHits.
Tamas Kis
am 23 Dez. 2022
Bearbeitet: Tamas Kis
am 23 Dez. 2022
Found a way to do this using a handle class: https://www.mathworks.com/matlabcentral/fileexchange/122422-counted-function-countedfunction. In an example I included it is about 5 times faster than using a memoized function.
If you have a function handle f, you can simply do
[f,count] = count_function_calls(f)
and keep using f in the same way as before. When you want to know the number of function calls, you just use
count()
Weitere Antworten (2)
Torsten
am 20 Jun. 2017
When n=5, f and fprime have been called 5 times each, namely to evaluate f(x1),f(x2),...,f(x5), fprime(x1),fprime(x2),...,fprime(x5).
Best wishes
Torsten.
Jan
am 20 Jun. 2017
function fx = f(x)
persistent Count
if isempty(Count)
Count = 0;
end
if nargin == 0 % Reply counter and reset it
fx = Count;
Count = 0;
return;
end
fx = x^3+x^2-2;
Count = Count + 1;
end
Now:
f();
x = f(1) + f(2) + f(3);
Count = f()
2 Kommentare
Jan
am 21 Jun. 2017
I do not understand you question. This example shows how to insert and request a counter ina function. Of course you can do exactly the same with other functions also.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!