|
|
Table-Lookup in M-File macht Schwierigkeiten |
|
hurjoke |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 07.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.07.2010, 10:10
Titel: Table-Lookup in M-File macht Schwierigkeiten
|
 |
|
 |
|
Hallo,
bin neu hier im Forum.
Ich sitze zur Zeit an einer Studienarbeit, in der ich ein bestimmtes Matlab/Simulink Modell erstellen muss. Dort wird aus einer gegebenen, zeitl. variablen Größe ein Vektor errechnet der insgesamt vier Werte enthält. Das Berechnen dieser Werte ist sehr rechenaufwändig, so dass ich gerne eine Lookup-Tabelle erstellen möchte, in der bereits berechnete Werte gespeichert und abgerufen werden können.
Die Berechnung der Werte findet in einem Level-2-M-file Block statt. Hier möchte ich auch die Lookup-Tabelle implementieren.
Ich hab dies so realisiert, dass vor dem eigentlichen Berechnen zunächst in einer Matrix per try/catch der Vektor zum zugehörigen Eingangswert aufgerufen wird. Ist dieser in der Matrix nicht vorhanden, so gibt es eine exception und im catch-Block wird dann der Wert berechnet und anschließend an dieser Stelle in die Matrix geschrieben.
Alles schön und gut, funktioniert im Prinzip auch.
Das Problem ist nur, dass Simulink diesen Level-2-M-file Block ja immer wieder neu aufruft und mit jedem Aufruf die bereits gespeicherten Werte verworfen werden.
Meine Frage also: Wie kriege ich das hin, dass die Lookup-Matrix mit ihren gespeicherten Werten über die gesamte Simulationszeit erhalten bleibt?
Wäre super wenn mir da jemand helfen könnte, ich komme deswegen nämlich zur Zeit einfach nicht voran mit meiner Studienarbeit
|
|
|
|
|
Andreas Goser |

Forum-Meister
|
 |
Beiträge: 3.654
|
 |
|
 |
Anmeldedatum: 04.12.08
|
 |
|
 |
Wohnort: Ismaning
|
 |
|
 |
Version: 1.0
|
 |
|
|
 |
|
Verfasst am: 07.07.2010, 12:27
Titel:
|
 |
Ich würde zunächst gerne die Vorgehensweise verstehen. Üblicherweise werden Lookup-Tables mit den enstprechende Lookup-Table Blöcken implementiert. Falls eine MATLAB Variable vorher berechnet werden muss, kann man einen durchaus komplexen Code programmieren und als Simulin Modell Callback mit dem öffnen (vor dem simulieren) ausführen.
Andreas
|
|
|
hurjoke |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 07.07.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.07.2010, 13:01
Titel:
|
 |
|
 |
|
Erstmal danke für deine Antwort!
Ich möchte ungern genau ins Detail gehen was das Modell betrifft, da könnte ich eventuell Ärger mit der Uni bekommen.
Vereinfacht gesagt habe ich ein Simulink-Modell mit einem Eingang X in Form einer Rampe oder auch einem Sinus. Dieses Signal geht dann in den Level-2-M-File Block und wird dort eingespeist.
Im Ausgangsfall wurde für jeden X-Wert mit der Funktion fgoalattain ein Vektor berechnet und dessen vier Werte auf Scopes ausgegeben. Da dies sehr rechenaufwändig ist, dachte ich nun jeden bereits berechneten Wert in eine Matrix zu schreiben, die bei jedem Aufruf des m-Files abgefragt wird, ob für den aktuellen X-Wert bereits der entsprechende Vektor berechnet wurde.
Ich schreibe mal exemplarisch den Code auf:
Nach meinem Verständnis sollte beim nächsten Aufruf mit einem bereits "verarbeiteten" X ein entsprechender Vektor in der Matrix gefunden werden, wird er aber nicht, weil mit jedem neuen Aufruf des m-Files die Matrix wieder leer ist.
Mit den Lookup-Table Blöcken habe ich es auch schon versucht aber da steigt ich überhaupt nicht durch wie das funktioniert. Es muss doch eigentlich auch "von Hand" in einem m-File gehen oder nicht?
|
|
|
|
|
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.
|
|