WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Persistent variable zurücksetzen

 

pr1zZ
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2013, 12:08     Titel: Persistent variable zurücksetzen
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:

Ich möchte eine Berechnung innerhalb einer embedded Matlab Funktion mehrmals ausführen abhängig vom Eingang.
Sobald der Eingang auf 1 ist, soll die Funktion ein paar Sachen berechnen und das Ergebnis ausgeben. Jedoch interessiert mich für die Zeit für die 1 anliegt nur das 1. Ergebnis --> isempty Überprüfung
Wenn der Eingang dann auf 0 springt, soll die Funktion nur noch 0 übergeben, und die persistent variable auf 0 setzen.
Bei einer neuen 1 will ich wieder die Berechnung starten, wobei mich wieder das 1. Ergebnis interessiert.

Jedoch kann ich die Variable weder clearen noch funktioniert es mit temp=[].


Hier mein Code:


Code:

persistent temp;           % Variable, die steuert, dass nur das 1. Ergebnis    verwendet wird
        if isempty(temp)
            temp = 1;
        else
            temp = 0;
        end
if temp==1
x =3                           % Das ist die eigentliche Berechnung
end
if Eingang==1
Ausgang =x
else
Ausgang =0
temp =[];                    % Hier möchte ich die Persistent Variable temp wieder zurücksetzen --> ist das mein Problem??

end



Wäre cool wenn ihr mir sagen könntet woran es liegt.

Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.06.2013, 20:50     Titel:
  Antworten mit Zitat      
Hallo,

was passiert denn, wenn du die Variable so zurücksetzt?
Wäre es nicht einfacher, sie auf 1 zurückzusetzen? Das ist ja quasi der Anfangswert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
pr1zZ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2013, 12:52     Titel:
  Antworten mit Zitat      
Hallo,

Ich bekomme einen Fehler, der besagt, dass diese Funktion nicht kompiliert werden kann.

Das Problem ist folgendes:
Das Programm soll beim ersten mal, wenn Eingang==1 ist eine Berechnung ausführen und das Ergebnis so lange ausgeben, bis Eingang==0, dann soll der Ausgang ebenfalls 0 sein.
Sobald wieder eine 1 anliegt, soll wieder eine Berechnung ausgeführt werden.
Aus diesem Grund müsste ich es hinkriegen, dass temp wieder leer ist.


Ich hoffe das ist einigermaßen verständlich.
Danke für euer Bemühen!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.06.2013, 19:23     Titel:
  Antworten mit Zitat      
Hallo,

bitte Fehlermeldungen kopieren, nicht interpretieren/übersetzen.

Wenn temp leer ist, wird es ja beim nächsten Durchlauf sofort auf 1 gesetzt.
Was spricht dann dagegen, temp auf 1 zu setzen?

Grundsätzlich klingt mir das, was du erreichen möchtest, sehr nach Enabled Subsystems. Wäre das eine Möglichkeit?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
pr1zZ
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 27.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.06.2013, 08:04     Titel:
  Antworten mit Zitat      
Zunächst: vielen Dank für deine Hilfe.
Ich habe das Problem wie du auch vorgeschlagen hast bereits mit einem Enabled Subystem gelöst ....

Dennoch würde mich interessieren warum es nicht möglich ist eine persistent variable (temp) auf den Ausgangszustand =[] zu setzen ....

Ist das so gewollt, oder war das ein Fehler von mir?

Wenn ich temp auf 1 setzen würde, würde die Berechnung bei jedem Zeitschritt gestartet. Das Problem daran wäre jedoch, dass dann jeweils andere Ergebnisse erreicht würden, da sich der Eingang mit der Zeit ebenfalls verändert.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.