MATLAB: How declare a variable only once in a matlab function block and then use the previous value the nex time the function is used

global variablesmatlab codermatlab functionsimulinkvariables

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!

Best Answer

You could also use a persistent variable inside your MATLAB function block:
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
...
Related Question