|
|
Simulink "To Workspace" in Matlab-Klasse einbinden |
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 19.03.2015, 22:32
Titel: Simulink "To Workspace" in Matlab-Klasse einbinden
|
 |
Hallo zusammen,
Die Ausgangslage ist, die, dass ich aus Simulink mit einem "to Workspace"-Befehl die Variable "yout" von Simulink an Matlab übergeben habe, diese erscheint auch folgerichtig im Workspace.
Nun habe ich über "classdef" eine Klasse definiert und möchte dieses "yout" dort gerne verwenden.
Kann mir jemand sagen, was ich da machen muss? Kenne mich mit Matlab leider viel zu wenig aus...
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 20.03.2015, 09:47
Titel:
|
 |
Hallo,
wenn yout irgendwo verwendet werden soll, dann wird man typischerweise über einen sim-Befehl eine Simulation anstoßen. Ich würde jedoch Out-Blöcke bevorzugen, da man dort die Ergebnisse direkt vom sim-Befehl zurückbekommt.
Was nun die Klasse angeht: vielleicht hilft es, zunächst eine Funktion zu schreiben? Was ist denn in dem Fall deine Motivation dafür, eine Klasse anzulegen?
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 12:15
Titel:
|
 |
Ich habe eine Matrix, deren Zellen jeweils ein Objekt darstellen, in diesem durch eine Klasse definierten Objekt werden dann Eigenschaften wie Temperatur usw. gespeichert. Durch den Pulsgeber möchte ich einen Input "pulsen", dh der Input ist entweder vorhanden (yout=1) oder nicht vorhanden (yout=0).
Letztenendes soll ein Temperaturfeld erstellt werden.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 12:31
Titel:
|
 |
Hallo,
... und was hast du zwischenzeitlich versucht, nicht zuletzt mit meinem Vorschlag?
Welche Probleme sind dabei aufgetreten?
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 12:52
Titel:
|
 |
Die Berechnung ansich klappt soweit so wie sie soll, nur der Pulsgeber o.ä. fehlt noch und evtl. eine Übersicht der einzelnen Werte bei diskreten Zeitschritten.
Gibt es irgendwo eine Übersicht, wie man innerhalb einer Klasse mit Methoden, Funktionen und Formeln umgeht, da hakt es auch noch etwas, finde aber im Netz bislang keine Informationen die mir weiterhelfen.
Wie würdest du denn grob ein Temperaturfeld in MAtlab angehen, ist Matlab da die geeignete Wahl?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 13:00
Titel:
|
 |
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 21:23
Titel:
|
 |
So, mittlerweile tut der Pulse Generator in Simulink auch das, was er tun soll, aber so ganz hilft es mir dann doch noch nicht weiter.
Aus Simulink erhalte ich yout, das entweder 0 oder 1 ausgibt, auch wann eine 1 und wann eine 0 ausgegeben wird passt nun. Mit tout gibt es dementsprechend die Zeit, die mit der definierten Schrittweite zählt, soweit so gut.
Nun ist es aber so, dass diese Werte als (mx1)-Array ausgegeben werden. bei 30 Schritten haben ich bei yout also ein 30x1 array.
Wie kann ich nun, unter Berücksichtigung von tout einen einzelnen Wert bekommen?
Ich habe eine Variable A, dessen Wert pro Zeitschritt entweder bspw. 100 oder 0 betragen soll, es soll aber immer bei einem Wert bleiben, dh kein Array o.ä.
Bsp:
t1 -> A=100
t2 -> A=0
t3 -> A=0
t4 -> A=100
usw.
Kann ich da yout/tout irgendwie weiter verarbeiten um das so hinzubekommen oder muss ich das anders angehen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 21:41
Titel:
|
 |
Hallo,
ich verstehe leider nicht, was du erreichen möchtest.
Insbesondere
Zitat: |
Wie kann ich nun, unter Berücksichtigung von tout einen einzelnen Wert bekommen? |
Natürlich. Wie soll dieser einzelne Wert aber aus dem Vektor bestimmt werden? Mittelwert? Maximum? Was ganz anderes?
Zitat: |
Ich habe eine Variable A, dessen Wert pro Zeitschritt entweder bspw. 100 oder 0 betragen soll, es soll aber immer bei einem Wert bleiben, dh kein Array o.ä.
Bsp:
t1 -> A=100
t2 -> A=0
t3 -> A=0
t4 -> A=100 |
Eine Variable kann nur einen Wert haben. Man kann natürlich eine if-Abfrage schreiben, um je nach Bedingung einen anderen Wert zuzuweisen, aber das ist wohl nicht gemeint? Vor allem ist mir nicht der Zusammenhang mit den bisherigen Fragen klar.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 22:00
Titel:
|
 |
|
 |
|
Ich hatte angedacht, den Wert von A als fixen Wert zu definieren. Über yout des Pulse Generators möchte ich steuern, ob der Wert von A wie im Beispiel entweder 100 oder 0 ist.
Das Ziel ist, bei diskreten Zeitpunkten t1, t2, t3, usw. zu bestimmen, wann A=100 oder A=0 gilt. Da das Ganze eine Simulation ist, würde ich die Zeit tout gerne in Form einer for-Schleife weiterverarbeiten, dazu ist das mit yout und tout ausgegebene Array nicht zu gebrauchen.
Der 30x1 Vektor yout hat 30 einzelne Werte, die als Array gespeichert werden, ich würde gerne zu einem Zeitpunkt t nur einen dieser Werte aus yout haben. Also t1->yout=1, t2->yout=0, t3->yout=1, t4->yout=0.
Es soll ein Binärsignal (0 oder 1) ausgegeben werden, für das ich angeben kann, für wie viele Zeitschritte 1 gilt und ebenfalls die Wiederholrate vorgeben, also die Zeit zwischen den steigenden Flanken (0->1).
Der Pulse Generator macht in Simulink soweit auch das, was ich haben möchte, nur die Ausgabe von yout und tout ist noch nicht in dem Format, mit dem ich weiterarbeiten kann.
So, es kann sein, dass ich mich an der ein oder anderen Stelle wiederhole, aber ist jetzt klar, was ich meine?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 22:51
Titel:
|
 |
Hallo,
und wie verhalten sich die t1-t3 denn zu tout?
Zitat: |
dazu ist das mit yout und tout ausgegebene Array nicht zu gebrauchen |
Warum nicht?
Zitat: |
Also t1->yout=1, t2->yout=0, t3->yout=1, t4->yout=0. |
Wie bereits gesagt: eine Variable kann nur einen Wert haben.
Es ist durchaus üblich, verschiedene Werte zu einem Vektor zusammenzufassen, aber das willst du ja anscheinend nicht.
Grüße,
Harald
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 23:13
Titel:
|
 |
t1, t2, t3 etc. sind die Zeiten, ich möchte eine Zeit t zu einem Ausgang yout haben.
Ob ich mit dem Array fortfahren kann, hängt davon ab, wie ich die einzelnen Variablen aus dem Array bekomme, wenn das Array aus t1, t2, t3 usw zusammengesetzt wird.
Wenn ich nun yout mit einer Variable multiplizieren möchte meckert Matlab entweder wegen unpassender Dimensionen oder spuckt wiederum ein Array aus, Wunschergebnis wäre eine Variable.
Kann ich auch einzelne Werte aus einem Array auslesen?
|
|
|
Gast |
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.03.2015, 23:16
Titel:
|
 |
Die Frage hat sich soeben selbst beantwortet. Man kann natürlich die Positionen mit tout(1,1) oder tout(20,1) direkt abfragen und bekommt dementsprechend die gewünschte 0 oder 1.
Damit kann ich natürlich was anfangen
|
|
|
|
|
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.
|