|
|
Aus GUI Blockparameter ändern |
|
schuli18 |
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.09.2011, 09:29
Titel: Aus GUI Blockparameter ändern
|
|
|
|
|
Hallo,
ich habe ein fertiges Simulink Modell und möchte durch eine GUI dem Benutzer die Möglichkeit geben in meiner Simulation einige Blockparameter zu setzen.
Dafür kann ich ja den set_param Befehl in meinem .m file nutzen. Der funktioniert so weit auch, wenn ich zum Beispiel den Wert in einem Constant Block setze:
Nun würde ich das aber auch gerne für andere Blöcke, wie zum Beispiel dem Buffer und dem RLS-Filter machen.
Beim Buffer möchte ich Output buffer size(per channel) auf 4 setzen, mit dem Befehl:
Wenn ich diese Zeile ausfuehren lasse, dann erhalte ich in der Konsole folgene Fehlermeldung:
Ich versthe das jetzt so, dass ich einen anderen Parameternamen setzen muss. Aber ich habe alles mögliche ausprobiert (Size, Output...) etc. Und es mir versucht von meinem ersten Beispiel zur Contsanten herzuleiten, aber ich finde einfach nicht den richtigen Parametername....
Nun mein Frage, ist es überhaupt möglich den Buffer Block aus der Gui raus steuern zu lassen und wenn ja, wie bekomme ich die korrekten Parameterbezeichner für den Block? Bzw gibt es generell eine Möglichkeit die Parameternamen für Blöcke zu finden, da ich auch noch andere Blöcke aus der Gui steuern möchte.
Hoffe ihr könnt mir weiter helfen und vielen Dank schon mal!
schuli18
_Peter_: Bitte Codeumgebung nutzen. Danke.
|
|
|
|
|
schuli18 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.09.2011, 10:09
Titel:
|
|
Habe jetzt noch weiter rum probiert und überlegt wie ich es lösen kann...
Wie wäre es mit einer globalen Variabeln?
Also zum Beispiel setze ich in den Buffer Block N für den Parameter Output size.
Dieses N deklariere ich dann in meinem .m file in der GUI.
Habe ich jetz auch eben ausprobiert, aber irgendwie wird N nicht übergeben, kann mir da vielleicht jemand einen Tipp geben, wie ich globale Variablen aus eine .m file in die Simulation übergeben kann (also was im .m file stehe muss und was im Model Explorer genau eingesetllt sein muss)
Ach ja, die Gui ruft die Simulation auf, nicht die Simulation die GUI. Also mein .m file steht nicht im Callback.
Danke!
Schuli18
|
|
|
_Peter_ |
Moderator
|
|
Beiträge: 537
|
|
|
|
Anmeldedatum: 08.12.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.10, 2010a
|
|
|
|
|
|
Verfasst am: 19.09.2011, 11:39
Titel:
|
|
Hallo schuli18,
die Parameter haben nicht immer diesen Namen, wie sie angezeigt werden.
Nutze folgenden Befehl um alle vorhandenen Parmater-Namen auszulesen:
ALternativ schau in die Simulink Hilfe. (http://www.mathworks.de/help/toolbox/simulink/slref/f23-20073.html) Dort findest du die Parameter-Namen auch.
Für deinen Fall würde das also lauten:
Das ist ein Punkt, an dem Matlab unbedingt Verbessrung vornehmen sollte. Wobei ich nicht weiß, inwieweit das beim aktuellen 2011-er Matlab umgesetzt ist, da ich mal wieder mit einer anderen Version arbeiten muss, aber gerade dieser Fall ist schon extrem. Parameter "N" für die "Output Buffer size"...
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
schuli18 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.09.2011, 13:46
Titel:
|
|
|
|
|
Hallo Peter,
super, vielen Dank für die schnelle Antwort.
Also das mit dem Buffer funktioniert jetzt, da du mir das N gegeben hast.
Aber irgendwie kann ich deinenzweiten Hinweis net umsetzen, also der Befehl mit get_param....
Gebe ich ihn (angepasst an meine Datei) in die matlab console ein, wird mir von Matlab gesagt, dass Buffer keinen Parameter mit namen ObjectParameters hat.... Ist der Befehl falsch? Oder muss ich ihn wo anders eingeben?
get_param('Encoder/Praediktion/LMS/Buffer','ObjectParamters')
Habe eben jetzt noch ein bisschen versucht durch die Hilfe zu kommen und bin auf diesen Befehl gestoßen:
p = get_param(gcb, 'ObjectParameters');
a = p.Name.Attributes
(http://www.mathworks.de/help/toolbox/simulink/slref/get_param.html)
Wenn ich das so eingebe, also angepasst an mein Model, erhalte ich kein N für den Buffer, sondern :
a = 'read-write' 'dont-eval' 'always-save'
Ich gebe da bestimmt nur was falsch ein, kansst du mir da noch mal wieter helfen, da es ja nicht nur der Buffer Block ist, für den ich die Namen brauche, sondern noch paar mehr.
Danke!!!!
Eva
|
|
|
schuli18 |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 12
|
|
|
|
Anmeldedatum: 29.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.09.2011, 13:58
Titel:
|
|
Ok, habe es doch, dachte es wäre irgendwie so aufgelistet wie
Output Buffer size = N
(Wunschdenken, eines nicht so Porgrammiererfahrenen)
Aber man muss sich einfach nach Eingabe des Befehls:
get_param('Encoder/Praediktion/LMS/Buffer','ObjectParameters')
die ans-Struktur anschauen und die Variablen Namen am Ende anschauen und zuordnen
Also vielen Dank noch mal für den Hinweis!
Eva
|
|
|
|
|
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.
|
|