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

Werte über einen Slider in workspace einlesen

 

JOSO3986
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.11.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 15.11.2016, 11:00     Titel: Werte über einen Slider in workspace einlesen
  Antworten mit Zitat      
Hallo zusammen ich arbeite gerade an einer Studienarbeit und will Werte über einen Slider in einer Workspacevariable ausgeben!

Leider funktioniert es vergebens.

Ich habe alle Variablen jeweils im Function-Code wie in einem extra Datasheet globalisiert und trotzdem geht es nicht so wie ich es mir vorgestellt habe.

Die Werte werden erst in ein Edit Fenster geschrieben und von da will ich sie in die Workspace übergeben.

hier mein Code:

Code:
% Das ist mein Programm
%Creating the slider
degval = num2str(set(handles.rotation_xyz, 'Value'));
pendulum_rot = str2double(set(handles.rot_deg_value, 'string', degval));
 


degval = mein Wert des Slider bzw. die Range
pendulum_rot = soll der Übergabewert im workspace sein
rotation_xyz = slider Function
rot_deg_value = ist das Edit-Fenster

Ich bedanke mich schon mal für eure Mühen und hoffe auf rasche Antwort Smile
_________________

Grüße Josip
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.11.2016, 14:21     Titel: Re: Werte über einen Slider in workspace einlesen
  Antworten mit Zitat      
Hallo JOSO3986,

Was bedeutet dies genau: ""Werte über einen Slider in einer Workspacevariable ausgeben"?

Wenn Du im Forum erwähnst, dass etwas "nicht funktioniert", poste immer die Fehlermeldung bzw. beschreibe genau den Unterschied zwischen den Erwartungen und den tatsächlichen Resultaten.

Zitat:
Ich habe alle Variablen jeweils im Function-Code wie in einem extra Datasheet globalisiert und trotzdem geht es nicht so wie ich es mir vorgestellt habe.

Was ist der "Function-Code"? Was bedeutet "extra Datasheet" und "globalisiert"? Was "geht nicht" und wie hast du es Dir vorgestellt?

Zitat:
Die Werte werden erst in ein Edit Fenster geschrieben und von da will ich sie in die Workspace übergeben.

Was ist "das Edit Fenster" und in welchen Workspace willst Du die Daten übergeben? In den Base-Workspace oder den Workspace der aufrufenden Funktion?

Wo steht der gepostete Code? Was bedeutet der Kommentar "%Creating the slider"?
Der Code sollte mit einer Fehlermeldung abbrechen, weil set einen Input-Wert braucht:
Code:
degval = num2str(set(handles.rotation_xyz, 'Value'));

Meinst Du vielleicht get ?
Der zweite Aufruf passt auch nicht:
Code:
pendulum_rot = str2double(set(handles.rot_deg_value, 'string', degval));
 

set setzt hier zwar den Wert, aber es gibt dann keinen Output zurück.

Bitte formuliere Deine Frage nochmal genauer.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JOSO3986
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.11.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 15.11.2016, 14:47     Titel: Re: Werte über einen Slider in workspace einlesen
  Antworten mit Zitat      
Hi Jan,

also erstmal habe ich euch hier angeschrieben weil ich Hilfe suche und es nicht funktioniert und nicht um herablassende Kommentare zu bekommen!

Wenn du weißt wie man einen Slider-Wert an eine Variable in den Workspace übergibt wäre es nett wenn du mir hilfst!

Schön wäre ein Beispielcode.

%Creating the slider ist eine Überschrift!

Nochmal zum Verständnis, ich will über einen Slider in GUI einen Wert in ein Editor oder Textfenster übergeben und diesen dann in eine Variable im Workspace. Dieser Wert soll von 0 auf 360 gezählt werden.

Sorry das ich dir nicht meinen kompletten Code schicken konnte aber leider kann ich nicht mehr zeigen Smile
_________________

Grüße Josip
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.11.2016, 15:21     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
also erstmal habe ich euch hier angeschrieben weil ich Hilfe suche und es nicht funktioniert und nicht um herablassende Kommentare zu bekommen!

Ich kann in Jans Kommentar nichts herablassendes erkennen. Wenn du schreibst, das etwas 'nicht funktioniert', dann kommst du ja aus einem bestimmten Grund zu dieser Einschätzung. Wenn du uns diesen Grund mitteilst, können wir dir (leichter) helfen.

So kann man höchstens vermuten, wo das Problem liegt.
Zusätzlich zu der set/get-Verwechslung (siehe Jans Kommentar) vermute ich, dass du GUIDE verwendest und der Code in einer Callback-Funktion steht. Da Funktionen einen eigenen Arbeitsbereich haben, stehen dort angelegte Variablen nur dort zur Verfügung.
Du kannst zwar mit assignin die Variablen auch in einen anderen Workspace schreiben - das ist aber schwierig zu debuggen und daher keine gute Idee. Stattdessen sollte man einen der Ansätze hier verwenden.
https://de.mathworks.com/help/matla.....data-among-callbacks.html
(ich bevorzuge 'Application Data')

Wenn du noch sagst, was du mit der Workspace-Variable machen möchtest, gibt es vielleicht noch bessere Möglichkeiten.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JOSO3986
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.11.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 15.11.2016, 15:29     Titel: Re: Werte über einen Slider in workspace einlesen
  Antworten mit Zitat      
Hi zusammen,

ja kann sein das ich da ein bisschen was verwechselt habe! Bin GUI-Neuling von daher sei es mir verziehen Smile

Also ich würde gerne die Variable an eine Konstante in Simulink übergeben und diese wird in mein vrsink-modell eingespeist!

Danke nochmal an euch beiden
_________________

Grüße Josip
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.11.2016, 16:20     Titel: Re: Werte über einen Slider in workspace einlesen
  Antworten mit Zitat      
Hallo JOSO3986,

Zitat:
also erstmal habe ich euch hier angeschrieben weil ich Hilfe suche und es nicht funktioniert und nicht um herablassende Kommentare zu bekommen!

Wir würden hier auch gar keine herablassenden Kommentare akzeptieren. Es ist ja der Sinn des Forums, Fragen zu beantworten. Deshalb sind hier alle Fragen willkommen.
Rückfragen sind ganz normal im Forum, denn den Fragenden ist oft nicht klar, auf welche Details es ankommt. Sehr oft ist genau das schon die Lösung des Problems.

Darum habe ich einige Rückfragen gestellt zu Details, die ich nicht verstehe. Ich wäre Dir gerne behilflich und brauche dazu mehr Informationen.

Zitat:
Wenn du weißt wie man einen Slider-Wert an eine Variable in den Workspace übergibt wäre es nett wenn du mir hilfst!

Ich wiederhole dann noch mal eine meiner Rückfragen: In welchen Workspace?

Zitat:
%Creating the slider ist eine Überschrift!

Aber im Code danach wird kein Slider erzeugt. Darum verstehe ich die Bedeutung nicht: Möchtest Du auch den Code bekommen, der einen Slider erzeugt?

Zitat:
ich will über einen Slider in GUI einen Wert in ein Editor oder Textfenster übergeben

Meinst Du ein uicontrol vom Type 'text' oder 'edit'? Für Dich ist das sicherlich vollkommen klar, aber bedenke, dass die Leser im Forum keinen blassen Schimmer davon haben, was du machst und willst.

Zitat:
und diesen dann in eine Variable im Workspace. Dieser Wert soll von 0 auf 360 gezählt werden.

Was bedeutet das? Welcher Wert soll wann "gezählt" werden?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JOSO3986
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.11.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 15.11.2016, 16:38     Titel:
  Antworten mit Zitat      
Hi,

Also wenn man den slider nach rechts bewegt soll er aufwärts von Null nach 360 zählen! Dieser Wert wird zuerst in ein Edit-Fenster übergeben und soll gleichzeitig in die Workspace-Variable geschrieben werden.

Dieser Wert wird dann an eine Constant in Simulink weiter geleitet. Dies dient zur Ansteuerung einer VRsink-Animation.

Ich habe doch die Werte bezeichnet:

degval = mein Wert des Slider bzw. die Range
pendulum_rot = soll der Übergabewert im workspace sein
rotation_xyz = slider Function
rot_deg_value = ist das Edit-Fenster

Die Werte sind ja auch egal! Ich wollte so etwas wie oben realisieren und Entschuldigung nochmal wegen der ungenauen Beschreibung. Bin Forum-Rookie und es ist nicht selbstverständlich das jeder weiß was ich meine Smile
_________________

Grüße Josip
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.11.2016, 17:07     Titel:
  Antworten mit Zitat      
Hallo JOSO3986,

Zitat:
Also wenn man den slider nach rechts bewegt soll er aufwärts von Null nach 360 zählen! Dieser Wert wird zuerst in ein Edit-Fenster übergeben und soll gleichzeitig in die Workspace-Variable geschrieben werden.

Also, ganz langsam. Das sind zu viele Schritte auf einmal.

Verwendest Du GUIDE oder erstellst Du das GUI per Code?
Hast Du bereits einen Slider erstellt?
Sind die "min" und "max"-Werte eingetragen?
Weißt Du, wann und wie dessen Callback aufgerufen wird?
Hast Du schon eine Callback-Funktion dazu geschrieben?
Kennst Du die "get(SliderHandle, 'Value')" Methode, um den Wert des Sliders auszulesen? Möchtest Du bestimmte minimale Schritt-Weiten einhalten?
Soll der Wert verändert werden während Du den Slider bewegst oder erst, wenn der Slider an der gewünschten Position wieder losgelassen wird?

Zum "Edit-Fenster" und der Workspace-Variablen habe ich bereits Rückfragen gestellt. Ohne die dazugehörigen Antworten kann man keinen passenden Vorschlag posten. Aber die obigen Fragen sind wohl erstmal genug! Konzentriere Dich also zunächst mal darauf. Eins nach dem anderen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.11.2016, 17:25     Titel:
  Antworten mit Zitat      
Hallo,

ein paar Nachfragen kann ich dir nicht ersparen...

Wird die Variable im Funktions-Workspace korrekt angelegt? (das kannst du mit dem Debugger überprüfen)

Soll die GUI geschlossen werden, bevor das Modell ausgeführt wird?

Wird das Modell händisch ausgeführt (Run Button) oder über den sim-Befehl?

Verstehe ich es richtig, dass du im Simulink einen Constant-Block verwendest und dort die zu verwendende Variable eingetragen hast?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JOSO3986
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.11.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 15.11.2016, 21:06     Titel:
  Antworten mit Zitat      
@ Jan
Hi Jan,

1. Ich verwende GUIDE

2. Der Slider ist erstellt und Min und Max Werte wurden schon bestimmt

3. Also wenn ich es in meinem Pushbutton_callback deklarieren will denke ich das ich die Funktion erst holen muss mit get und dann setten um in mein Editfenster zu schreiben.

4. Ja ich kenne die get(slider.handles, 'Value')-Methode bloß das der Slider bei mir rotation_xyz heißt

5. Der Wert soll während ich den Slider bewege in der Workspace synchronisiert werden.

6. Meine Workspace variable habe ich mit pendel_rot deklariert und in meiner Function als globale Variable definiert

7. Ich habe ein Editor-Fenster definiert mit rot_deg_val und dieses soll Werte von 0-360 erhalten

8. Die Werte die in dieses Editor Fenster geschrieben werden sollen dann in der Workspacevariable reingezählt werden

Ich hoffe es war aufschlussreicher als davor Smile wenn nicht ergänze ich es gerne.

@ Harald

Hi nochmal,

1. Die Variable wird jeweils im data m-File globalisiert wie in der Callback Function des Pushbuttons hier wird wie oben beschrieben der Slider aufgerufen.

2. Nein über die GUI wird das komplette Simulink Modell gesteuert, sprich es wird der Run-Button der Funktion gedrückt und meine GUI-Plattform öffnet sich. Hier kann ich nun Werte verändern. Nachdem ich die Werte eingegeben habe drück ich ein pushbutton und die Simulation wird sammt animation ausgeführt. Ich will nun die Animation über die Slider drehen bzw zoomen.

3. Ja ich will im Simulink einen Constantblock verwenden der die Werte von pendulum_rot einspeist und weiter leitet an mein VR-Sink-Modell.


Nochmals vielen Dank und schönen Abend noch
_________________

Grüße Josip
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 15.11.2016, 22:50     Titel:
  Antworten mit Zitat      
Hallo,

hier werden verschiedene Wege vorgestellt:
http://blogs.mathworks.com/pick/201.....uis-with-simulink-models/
Mein Favorit wäre der erste.

Wenn auch reagiert werden soll, bevor der Slider losgelassen wird, siehe hier:
https://www.mathworks.com/matlabcen.....er-updates-while-dragging

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JOSO3986
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 15.11.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 16.11.2016, 10:58     Titel:
  Antworten mit Zitat      
@ Harald

Guten Morgen Harald,

ich danke dir vielmals für den Tip! Dieser Beschreibung ist sehr hilfreich! Habe aber auch selber mal rumgestöbert und das gefunden!

https://de.mathworks.com/help/sl3d/.....?searchHighlight=membrane

Hier wird einmal beschrieben bei vrmemb wie es über uicontrol funktioniert und über vrmemb1 wie es im Simulinkmodell aussieht! Zudem habe ich herausgefunden das es mit einem Constant-Block gar nicht funktioniert, hier gibt es bestimmte Slider-Blöcke die mit dem Slider verknüpft werden können.

Ich danke euch aber vielmals dieses Forum ist echt spitze Smile
_________________

Grüße Josip
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
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.