How declare a variable only once in a matlab function block and then use the previous value the nex time the function is used?
16 views (last 30 days)
Show older comments
Daniel Sluder
on 8 Jul 2014
Commented: subhahsay shetty
on 30 Sep 2018
I am using the matlab function block in simulink. I need it to continuously read its inputs and change its outputs. The problem is that I must declare my start position as zero. Then my function runs and increments as desired. THEN it seems to enter the function again and reset to zero (as it would). I need to declare the variable to zero the very first time through the function then all times after use the value that it generated before. See code below:
function y = fcn(sEMG5,sEMG6)
%#codegen
% %set original servo positions to zero
% servo2=0;
% servo3=0;
% servo4=0;
% servo5=0;
%incrememt servo position when threshold is met
if sEMG5 > 150
servo2 = servo2+3;
elseif sEMG6 > 150
servo2= servo2-3;
end
%keep servo position in allowable range
if servo2 > 180
servo2 = 180;
elseif servo2 < 0
servo2 = 0;
else
servo2=servo2;
end
y = servo2;
So my problem is how to declare servo2 as zero once and then use the value that y was all successive times through. Thanks!
0 Comments
Accepted Answer
Ryan Livingston
on 9 Jul 2014
function y = fcn(sEMG5,sEMG6)
%#codegen
persistent servo2;
% set original servo positions to zero the
% first time this function is invoked
if isempty(servo2)
servo2=0;
end
% Use servo2 here
...
2 Comments
subhahsay shetty
on 30 Sep 2018
what if we want to initialize and then update the values. Can we do that??
More Answers (1)
Anthony Poulin
on 9 Jul 2014
Is it possible for you to have one more input and one more output? What I suggest is to do like the image below:
You do not work with a variable but with an input (u2) that you update and affect to the output (y2). With a unit delay you have your output, in input the next simulation step u2(z) = y2(z-1). (You configure your unit delay with the initial value to 0)
See Also
Categories
Find more on Event Functions in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!