|
|
Simulationswert in Array speichern und sofort wiederverwende |
|
david |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.09.2008, 09:39
Titel: Simulationswert in Array speichern und sofort wiederverwende
|
|
Hallo allerseits.
Ich hätte eine dringende Frage zur Embedded MatLab Funktion und es wäre super wenn ihr mir weiterhelfen könntet:
Ich möchte während der Simulation meines Simulink Modells Werte,in meinem Fall Indizies, die in meiner Embedded Fkt bestimmt werden, in einem Array speichern und sie jedoch sofort wieder für den nächsten Simulationsschritt wiederverwenden(also fällt "to worklspace" raus).
In MatLab selbst wäre es:
array=[ ] %Initialisierung
array(end+1) = Wert des Index
Wie könnte man diesen Code in Simulink umsetzen?(Die Embedded MatLab Kkt kennt diese Befehle array(end+1) nicht)
|
|
|
|
|
urs |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.09.2008, 15:31
Titel:
|
|
Ich glaube das man dieses Problem nicht mit dem embedded Matlab Function Block loesen kann... oder hat es inzwischen geklappt (wenn ja wie? Ich stehe auch gerade vor diesem Problem).
Die einzie Moeglichkeit ist wohl die Verwendung des S-Function Blocks. Leider verstehe ich nicht, was alles in dieses File rein muss.... Weiss da jemand weiter?
|
|
|
david |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.09.2008, 09:26
Titel: Re
|
|
Ne,ich hab leider noch keine Lösung gefunden.Aber S-Funktions können ziemlich böse werden.Hab leider noch keine selbst geschrieben,hab mir aber mal in nem Buch des angeschaut und man muss alle möglichen Flags setze.
Außerdem muss das ganze noch im Realtime Workshop laufen...
Aber wenn du ne Lösung findest....
Mfg
|
|
|
Noxin99 |
Forum-Anfänger
|
|
Beiträge: 36
|
|
|
|
Anmeldedatum: 14.12.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.09.2008, 14:08
Titel:
|
|
willst du immer nur einen wert bestimmen und diesen für den nächsten simulationsschritt verwenden???
das kannst du super mit der S-Funktion machen.
solange du eine fest definierte anzahl an ein und ausgängen hast ist das kein problem!
du könntest in der S-Funktion einen wert ausrechnen lassen, diesen auf den ausgang legen und mit einem verzögerungsglied wieder auf den eingang legen!
falls das ungefähr das ist was du wolltest, kann ich dir dabei gerne weiterhelfen
|
|
|
Bastian |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 17.06.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.06.2009, 15:05
Titel:
|
|
das Thema ist zwar schon sehr alt, aber ich kann es ja mal wieder beleben.
Die lösung mit der externen Schleife für Daten, die man im nächsten Simulationsschritt wieder braucht, finde ich irgendwie unschön.
Gibt es wirklich keine Möglichkeit, innerhalb des S-Funktion Block eine Variable in den nächsten Simulationsschritt zu retten?
Habe etwas von "parsient" Variabeln gehört, aber finde nichst konkretes darüber.
|
|
|
Epfi |
Forum-Meister
|
|
Beiträge: 1.134
|
|
|
|
Anmeldedatum: 08.01.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 20.06.2009, 23:15
Titel:
|
|
Bastian hat Folgendes geschrieben: |
Habe etwas von "parsient" Variabeln gehört, aber finde nichst konkretes darüber. |
Probier es mal mit persistent - dann findest Du auch sicherlich konkreteres darüber.
|
|
|
Al |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.08.2009, 14:44
Titel:
|
|
s-function Discrete states Verwenden ( können eigentlich alles speichern)
Du musst aber genau auf die Updatereihenfolge achten zu der discrete states ausgelesen und gesetzt werden.
|
|
|
Manuel Soares |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 15.08.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 15.08.2009, 15:07
Titel:
|
|
Also ich stehe nun vor einem ähnlichem Problem. Ich serielle Daten aus der Simulation in ein 2-D-Array einlesen, dann Zeilen und Spalten miteinander tauschen und auf die Sampletime bezogen(umsortiert) wieder ausgeben. Ich habe mich entschieden dieses mit einer S-function zu lösen. Um die Werte in den nächsten Simulationsschritt zu retten habe ich Dwork-Vectoren gefunden. Mit dessen Verwendung wird Speicher reserviert. Diese Variablen sind, vermute ich, ähnlich wie Globale Variablen im Verhalten. Da ich nun ein großes Array benötige, suche ich nach einem Weg diese auch dementsprechend zu initialisieren. meine erster Versuch war es ein Signal um zwei Schritte zu verzögern. Hierzu musste ich allerdings eine zweite Variable definieren.
Kennt da jemand eine andere Methode??
Meine initialisierung:
Meine Verzögerung:
Beschreibung: |
verwendeter code zur Verzögerung |
|
Download |
Dateiname: |
interleaver.m |
Dateigröße: |
1.97 KB |
Heruntergeladen: |
618 mal |
|
|
|
|
|
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.
|
|