|
|
exist-Funktion in Funktion in einem Simulink Modell |
|
Raketenmaid |
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.04.2013, 14:11
Titel: exist-Funktion in Funktion in einem Simulink Modell
|
|
|
|
|
Ich komme nicht weiter.
Ich möchte die Existenz einer als innerhalb eines Funktionsblocks meines Simulinkmodels definierten Variable (Status persistent) überprüfen mittels Funktionsaufruf exist. Bekomme immer die Rückmeldung dass diese Funktion für Codegenerierung nicht unterstützt wird.
Hier der Code-Versuch:
mit der evalin Funktion habe ich versucht, die Existenz der Variable innerhalb des Workspaces der aufrufenden Funktion zu überprüfen in der Sorge, dass die Funktion exist von dieser Funktion indx aus nicht auf den allgemeinen Workspace zugreifen kann. Hat aber auch nichts geholfen. Das Problem scheint darin zu liegen, dass der Parser diese Funktion exist nicht einbinden kann (mein Bauchgefühl).
Jedenfalls schaut die Fehlermeldung so aus:
Zitat: |
Function 'exist' is not supported for code generation. Consider using coder.extrinsic('exist') to bypass code generation. |
Es wird mir empfohlen coder.extrinsic('exist' zu verwenden. Wie mache ich das und was bewirkt das?
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.04.2013, 15:38
Titel:
|
|
Hallo,
bevor es an die eigentliche Frage geht:
Wenn du eine Variable als persistent definierst, existiert sie automatisch in diesem Bereich. Anfangs ist die Variable ein leeres Array. Wenn du also überprüfen willst, ob die Variable initialisiert wurde, kannst du isempty verwenden.
Mir erschließt sich nicht, was du erreichen willst, da du ja die Variable a gar nicht mehr verwendest.
Grüße,
Harald
|
|
|
Raketenmaid |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.04.2013, 17:19
Titel:
|
|
Ja, das ist ein Code, der noch unsauber ist. Ersetze bitte gedanklich die Zeile
mit
Aber weder das eine noch das andere führt auf einen ausführbaren Code. Die Frage ist, warum kann ich nicht exist verwenden? isempty funktioniert, trifft aber, wenn ich das richtig verstanden habe, nicht ganz das, was ich machen möchte, oder?
|
|
|
Raketenmaid |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 58
|
|
|
|
Anmeldedatum: 28.09.12
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.04.2013, 18:45
Titel:
|
|
Damit vielleicht klarer ist, was ich erreichen möchte - so eigentlich:
Sobald die Simulationszeit einen bestimmten Wert erreicht (t_switch), soll A mit einem vorgegebenen Wert verglichen werden. Sobald A erstmalig diesen Wert überschreitet, soll u zu eins gesetzt werden und dort verharren, selbst wenn A wieder unter den vorgegebenen Wert sinkt.
Ich wollte das halt gerne mit einer persistent Anweisung erreichen und eben den geposteten Code. Aber er funktioniert einfach nicht! FRUST!
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.04.2013, 19:25
Titel:
|
|
Hallo,
Zitat: |
Die Frage ist, warum kann ich nicht exist verwenden? |
Weil exist für die C-Code - Generierung nicht unterstützt wird.
http://www.mathworks.com/help/relea.....-for-code-generation.html
Ich bin kein Experte in dem Thema, aber mit coder.extrinsic kannst du eben bestimmte Befehle von der Einschränkung ausnehmen. http://www.mathworks.com/help/relea.....lref/coder.extrinsic.html
Was hält dich davon ab, das zu versuchen?
Zitat: |
isempty funktioniert, trifft aber, wenn ich das richtig verstanden habe, nicht ganz das, was ich machen möchte, oder? |
Das kann ich nicht beurteilen, weil mir nicht klar ist, was du machen willst - weniger auf die einzelnen Anweisungen bezogen als auf die gesamte Funktion.
Eine Erläuterung des Gesamtkontexts kann sehr dabei helfen, effiziente Hilfestellung zu leisten.
Grüße,
Harald
Edit: soeben erst die weitere Nachricht gelesen.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 04.04.2013, 19:57
Titel:
|
|
|
|
|
|
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 - 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.
|
|