How do I set counter = to a value when it is a persistent variable so if i reinitialize it each time through a loop it loses it purpose?
2 views (last 30 days)
Show older comments
function result = exp_average(a,varargin)
persistent avg counter;
if counter ==0
counter =0;
end
if nargin ==1
in1 = a
no = 1
end
if nargin ==2
in1 = a
in2 = b
no = 2
end
if no ==1 && counter ==0
b = 0.1;
a = in1;
avg = b * a+ (1-b)*avg;
counter = counter +1'
end
if no == 2 && counter ==0
clear exp_average;
a = in1;
b = in2;
avg = b*a+(1-b)*avg;
counter = counter+1;
end
if no ==1 && counter> 0
a = in1;
b = 0.1;
avg = b*a+(1-b)*avg;
counter= counter+1;
end
if no ==2 && counter>0
clear exp_average;
a = in1;
b = in2;
avg = b*a+(1-b)*avg;
counter = counter+1;
end
end
How do I set counter = to a value when it is a persistent variable so if i reinitialize it each time thruugh a loop it loses it purpose? I need to feed "or" and "and" statement logical operators with who numbered values. I'm no so long as counter isn't initialized.
0 Comments
Answers (1)
Daniel kiracofe
on 28 Nov 2016
I'm not sure if I understand the question. Here is my guess at what you are asking. If this isn't it, please restate the question.
Take a look at
https://www.mathworks.com/help/matlab/ref/persistent.html
The key line is " the persistent variable does not exist the first time you issue the persistent statement, it is initialized to the empty matrix."
So instead of
if counter ==0
counter =0;
end
Try this instead
if (isempty(counter))
counter =0;
end
See Also
Categories
Find more on General Applications 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!