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.
Prashant Kumar answered .
2025-11-20
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 ...