How declare a variable only once in a matlab function block and then use the previous value the nex time the function is used?
Mostra commenti meno recenti
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!
Risposta accettata
Più risposte (1)
Anthony Poulin
il 9 Lug 2014
3 voti
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)
1 Commento
Daniel Sluder
il 9 Lug 2014
Categorie
Scopri di più su Simulink Coder in Centro assistenza e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!