I am using a function and i want to update counter on each function call and use value of that counter for some condition.But every function call counter initialize to zero and if i use counter=counter+1 it always give counter =1 so how to do this?
32 次查看(过去 30 天)
显示 更早的评论
The variable counter value should be equal to number of times function call.
0 个评论
采纳的回答
Jan
2017-5-26
The question might be more clear, if you post the relevant code. The reader cannot guess, what code causes the observed "every function call counter initialize to zero".
Either:
counter = 0;
for k = 1:100
counter = counter + 1;
disp(counter);
end
Or it might be a counter inside a function:
function Y = YourFcn(X)
persistent Counter
if isempty(Counter)
Counter = 0;
end
Counter = Counter + 1;
Y = sin(X + Counter);
Then the Counter is reset by "clear YourFcn".
3 个评论
Jan
2017-5-27
It is not clear, what the code should do. A bold guess:
function Avg_SU = request_order(x)
persistent FirstRun
if isempty(FirstRun)
X = 1:14;
FirstRun = false;
else
z = (x == (1:14));
Xr = X(z);
n = numel(Xr);
X(z) = Xr(randperm(n,n));
end
%%some code for request order%%
Avg_SU=sum(avg_su_per_req)/100;
X is not used at all?!
But as long as I do not really undestand, what you want to solve, I would not trust this code.
Vishnubharathi Thirupathi
2023-3-23
Hi, I need to impletment counter within a if condition of a function. eg., if the condition goes into elseif, it should be there max 540s && SOC>=20. Is there any other way to achieve this? because t_reff = 0; makes t_reff = 0 each time, and I always see t_reff =1. I tried with persistant and global but could not rightly implement what I need.
function [I_ref,t] = fcn(t,SOC,P)
t_reff = 0;
I_ref = 0;
%% Operational Limits
% Current Limit
if (t<=1200 && SOC >= 40)
I_ref = -19.25/P;
elseif (t_reff <= 540 && SOC >= 20)
I_ref = -20.25/P;
t_reff = t_reff+1;
else
I_ref = -20.75/P;
end
更多回答(1 个)
MathReallyWorks
2017-5-26
Hello Amit,
Keep your initialization on top of the code (i.e. outside of loop if any).
Check if it is in any loop which is causing it to initialize again.
counter=0
should be above the code (i.e. outside of loop)
and
counter=counter+1
should be inside the loop.
If you want a better answer, attach your code.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Event Functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!