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

Illustration
Ryansmith - 2020-04-29T20:10:06+00:00
Question: How declare a variable only once in a matlab function block and then use the previous value the nex time the function is used?

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.

Expert Answer

Profile picture of Prashant Kumar 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
...


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!