|
|
Funktion schreiben / y letzten Wert behalten |
|
Joe01 |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 28.05.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.12.2020, 19:47
Titel: Funktion schreiben / y letzten Wert behalten
|
|
Hallo zusammen,
leider komme ich bei einer Sache nicht weiter und hoffe ich könntet mir helfen.
Ich will eine Funktione schreiben mit folgender Logik.
Der Einganswert ist eine berechnete Funktion die zwischen 1 und 0 sich hin und her bewegt.
Wenn der Eingabewert größer als 0.8 ist dann soll Ausgabewert 0 sein.
Wenn der Eingabewert kleiner als 0.4 ist dann soll Ausgabewert 1 sein
Wenn der Eingabewert sich dazwischen befindet ändert sich der Ausgabewert nicht.
Nun weiß ich nicht wie ich schreiben soll das der Ausgabewert den letzen Wert nicht verändert. Gibt es ein Komando dazu das y den letzten Wert behält?
Mein Versuch:
function y= Name(u)
Einganswert = u(1);
if (Eingangswert > 0.01 *0.
y=0 ;
elseif (Eingangswert < 0.01 * 0.4)
y=1
else ?????
end
end
Liebe Grüße Joe
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.12.2020, 19:59
Titel:
|
|
Hallo,
wenn ich die Frage richtig verstehe, benötigst du eine statische Variable. In MATLAB gibt es dafür das Schlüsselwort persistent.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Joe01 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 28.05.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2020, 17:47
Titel:
|
|
Danke für die Antwort.
Wenn ich persistent allerdings richtig verstehe, dann wird der y Wert beim nächsten Aufruf gespeichert, bedeutet doch auch das der Ausgabewert y, wenn er beim ersten Aufruf mit1 verlassen hat beim zweiten mal wieder in die Bedinung kleiner 0.4 Gerät, dann 2 ist?
BTW. mein Code ist unten fehlerhaft statt 0.01 soll natürlich es 1 heißen
Grüße
Joe
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.12.2020, 18:12
Titel:
|
|
Hallo,
ich verstehe die Rückfrage nicht. Warum sollte der Wert 2 werden?
Probier's doch mal - sind ja nur ein paar Zeilen, die man anpassen muss.
Ein Problem sehe ich höchstens darin, was du machst, wenn der erste Eingabewert " sich dazwischen befindet" - dann gibt es doch keinen vorherigen Ausgangswert?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Joe01 |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 28.05.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2020, 20:02
Titel:
|
|
Ok das mit dem Wert 2 bitte vergessen, das war ein Verständnisfehler von mir.
Habe Testweise diese Funktion geschrieben.
function y= test(u)
a = tippe ich selber ein
persistent x;
if (a > 1 *0.7)
x=0 ;
elseif (a < 1 * 0.3)
x=1;
else x=x;
end
y=x;
end
Selbst wenn der erste Eingabewert größer als 0.7 oder kleiner als 0.3 ist und ich danach einen Zwischenwert z.B 0.5 eingebe, wird y leer ausgegeben.
Ich entedecke den Fehler nicht, habt ihr einen Hinweis?
Grüße Joe
|
|
|
ueg |
Forum-Fortgeschrittener
|
|
Beiträge: 51
|
|
|
|
Anmeldedatum: 15.08.19
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2020, 20:32
Titel:
|
|
Edit: Ich glaube hier oben stand Blödsinn..
Oder falls ich das falsch verstanden habe, was du mit dem x vor hast, dann speichere x zur Not in deinem Hauptscript ab und übergebe den aktuellen Wert mit in die Funktion als [y, xausgabe]=test(u,xeingabe);
Edit: also bei mir funktioniert das Ganze so, wobei man für meine Begriffe das "else x=x" auch weglassen könnte.
Nächster Edit:
Wie meinst du das mit "a ändere ich selber ab"?
Wenn du die Funktion zum Abändern von a editierst und dann automatisch neu speicherst wenn du sie aufrufst, verschwindet meines Wissens nach auch eine "persistente" Variable.
Ich denke, dass hier dein Fehler liegt.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|