WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Aus GUI Blockparameter ändern

 

schuli18
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2011, 09:29     Titel: Aus GUI Blockparameter ändern
  Antworten mit Zitat      
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:
Code:

set_param('.../Constant','Value','40')
 

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:
Code:

set_param('.../Buffer','Output buffer size (per channel)','4')
 

Wenn ich diese Zeile ausfuehren lasse, dann erhalte ich in der Konsole folgene Fehlermeldung:
Code:

??? Error using ==>
RLS_Praediktorordnung>StartButton_Callback at 110
Buffer block (mask) does not have a parameter named
'Output buffer size (per Channel)'.
 

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.
Private Nachricht senden Benutzer-Profile anzeigen


schuli18
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2011, 10:09     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 19.09.2011, 11:39     Titel:
  Antworten mit Zitat      
Hallo schuli18,
die Parameter haben nicht immer diesen Namen, wie sie angezeigt werden.
Nutze folgenden Befehl um alle vorhandenen Parmater-Namen auszulesen:
Code:

get_param('.../Buffer', 'ObjectParameters')
 

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:
Code:

set_param('.../Buffer','N','4')
 


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?
Private Nachricht senden Benutzer-Profile anzeigen
 
schuli18
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2011, 13:46     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
schuli18
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 29.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.09.2011, 13:58     Titel:
  Antworten mit Zitat      
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 Smile

Also vielen Dank noch mal für den Hinweis!

Eva
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.