In einem MATLAB-Funktionsbaustein in Simulink ist es möglich, eine persistente Variable zu implementieren. Aber wie würde jemand vorgehen, dasselbe zu implementieren, ohne den MATLAB-Funktionsblock oder einen ähnlichen Scripting-Ansatz? Mit anderen Worten, ist es möglich, das Verhalten der persistenten Variablen in Simulink mit einfachen/elementaren Blöcken (ohne externe Toolbox) zu replizieren?Wie implementieren Sie das Äquivalent einer persistenten Variablen in Simulink?
function y = fcn(u)
%#codegen
persistent n;
if isempty(n) %%initialize persistent variable
n = 1;
end
if u == 4 || n == 1
y = 0;
n = 2;
elseif n == 2
if ...
n = 1;
else ...
n = 3;
end
else
n = -1;
end
Persistent-Speicher, wie dies entspricht einer [Unit Verzögerung] (https://www.mathworks.com/help/simulink/slref/unitdelay.html). In Ihrem Beispiel ist die Anfangsbedingung "1", der Blockausgang ist das _old_ 'n' und die Logik in Ihrem Code wird verwendet, um das (Einheitsverzögerungs-) Blockeingangssignal zu berechnen, welches das _new_' n' ist. –