Hallo Sven,
das wäre
In[4]:= Clear[smittTriger]
Module[{res = 0.},
smittTrigger[x_?NumericQ] := Which[x < -0.8, res = -10; res, x > 3.2,
res = 10; res, True, res]
]
In[7]:= (* Initialisierung wurde nicht vorgegeben ... *)
smittTrigger[1.]
Out[7]= 0.
(* Probe *)
In[11]:= Transpose[{#, smittTrigger /@ #} &[Join[Range[-3, 5],
Reverse[Range[-3, 5]]]]]
Out[11]= {{-3, -10}, {-2, -10}, {-1, -10}, {0, -10}, {1, -10}, {2, -10},
{3, -10}, {4, 10}, {5, 10}, {5, 10}, {4, 10}, {3, 10}, {2, 10}, {1, 10},
{0, 10}, {-1, -10}, {-2, -10}, {-3, -10}}
aus dem stackexchange abgeschrieben:
https://mathematica.stackexchange.com/questions/40349/can-mathematica-functions-have-static-variables
Der Trick ist, statt smittTrigger[x_?NumericQ]:=Module[{},....] den
smittTrigger im anonymen Module[] zu definieren.
Grüsse
Udo.
Am 20.10.2019 um 19:27 schrieb Sven Stoll via demug:
Liebe Liste,
ich verzweifle eine Funktion mit Gedächtnis zu bauen, die ähnlich einem Smitt-Trigger eine Hysterese abbildet.
Konkret soll die Funktion den Funktionswert von 10 liefern, wenn das Argument > +3.2 (Volt) ist, und -10, wenn das
Argument kleiner als -0.8 (Volt) ist.
Im Bereich von -0.8 bis + 3.2 soll jeweils der letzte Wert (10 oder -10) erhalten bleiben.
Das ist an und für sich kein Problem mit eine prozeduralen Programmiersprache, aber wie macht man das mit Mathematica?
Habt jemand eine Idee? Meine Ansätze (MODULE, WHILE, IF) sind alle gescheitert.
Viele Grüße
Sven
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html
_______________________________________________
DMUG Deutschsprachiges Mathematica-Forum demug@XXXXXXX.ch
http://www.mathematica.ch/mailman/listinfo/demug
Archiv: http://www.mathematica.ch/archiv.html