ich möchte aus einer Reihe von Vorgabewerten beliebig viele Zustände ausrechnen. Nach einigen Überlegungen habe ich angefangen das mit mehreren Schleifen zu konstruieren, was aber den Rahmen sprengt. Ich bin davon überzeugt, dass es eine bessere Herangehensweise an dieses Problem gibt.
Das Problem:
Als Eingangsparameter habe ich verschiedene physikalische Größen (alle als von...bis -Angaben). Daraus kann ich weitere, für das System relevante, Größen ausrechnen (die dann wieder mit von...bis -Angaben eingegrenzt sind). So geht das ein paar mal weiter, bis letztenendes alle Werte aus den Eingangwerten berechnet sind und ich alle Punkte/Zustände, die gültig sind (in jedem Intervall für jede Größe liegt) habe.
Im Anhang habe ich das Schema einmal aufgemalt. Dabei muss man sich noch vorstellen, dass a,b,c Laufvariablen von...bis sind und die errechneten Werte x und y wieder nur in einem bestimmten Intervall liegen dürfen.
Die Punkte/Zustände, die durch die Berechnung und Intervalleingrenzung von x und y rausfallen, müssen also ebenfalls in den Matrizen für a,b,c wegfallen. (So das nachher nur noch Punkte bestehen, die über das ganze System im richtigen Intervall liegen)
Ich hoffe wirklich, dass ich das Problem einigermaßen geschildert habe
Rätzel jetzt schon etwas länger an der Geschichte.
Meine Frage dazu lautet, wie ich an diese Problemstellung bestmöglich herangehen kann. Vielleicht sogar mit Simulink??
Sowohl die Skizze als auch die Text-Beschreibung sind sehr abstrakt.
Zitat:
ich möchte aus einer Reihe von Vorgabewerten beliebig viele Zustände ausrechnen.
Das sagt mir bereits nichts, so dass es als Einführungssatz einer Frage nicht geeignet ist. Die Bedeutung der Skizze und der Zusammenhang mit der Frage erschließt sich mir auch nicht direkt.
Die Inputs sind wahrscheinlich nicht "physikalische Größen", da in Matlab zunächstmal alles nur Zahlen sind. Dann wäre es hilfreich, wenn Du dafür ein konkretes Beispiel gibts. Verstehe ich es richtig, dass Deine Inputs etwas wie: "x = [10, 23]" sind?
Was genau sind "Laufvariablen"?
Wie können "Punkte/Zustände" in einer Matrix "wegfallen"?
Nun kann ich auf die einzelnen Elemente (bei mir steht ein Element für einen Zustand) zugreifen und weiß ob dieses Element in den Grenzen liegt (wenns eben einen Wert gibt) oder außerhalb liegt (bei NaN):
Bei meinem eigentlichen Problem habe ich als Ergebnisse jeweils 6-D Matrizen ( x(i,j,k,l,m,n) ) und somit auch 6 for - Schleifen ineinander. Klappen tut es zwar aber die Geschwindigkeit lässt zu Wünschen übrig.. ist klar wegen den FOR-Schleifen. Außderdem denke ich ist diese Art das zu programmieren eh nicht die Tollste!!
Ist das jetzt verständlich geworden was ich meine?
Ich verstehe den Zusammenhang zwischen dem Code und der Beschreibung und der Skizze in Deiner ersten Mail nicht. Darum nur ein paar Vereinfachungen am Code: Ziehe alle wiederholten Berechnungen so weit wie möglich aus den Schleifen heraus.
Dieser Code liesse sich nun noch mit ein paar BSXFUN beschleunigen, aber erstmal bliebe zu testen, ob noch die gleichen Werte herauskommen und ob es bereits schnell genug ist. Es bringt nämlich nichts, Stunden in die Optimierung zu stelcen um Sekunden Rechenzeit zu sparen. Im Endeffekt zählt ja nur die Zeit, bis das Problem gelöst ist.
Man benötigt für die elementweise Multiplikation keine Schleife, wie du siehst.
Bei der Verknüpfung mit || müssen beide Argumente skalar sein. Wie die Dokumentation erklärt, benötigt man für Arrays den | Operator. Also hatte ich da einen Tippfehler:
Nur nicht zu schnell aufgeben. Da ich kein Matlab zur Verfügung habe, können solche Tippfehler schon mal passieren, obwohl sie beim Laufenlassen sofort hilfreiche Fehlermeldungen produzieren würden.
werde schauen ob ich das am Wochenende noch ausprobiert bekomme. Ansonsten werd ich nach meinem Urlaub in 2 Woche nochmal weiter probieren.
Gruß Sebastian
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
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.