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

Rotate z-axis until stop button

 

Pascal12
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.10.16
Wohnort: Hessen
Version: R2014a
     Beitrag Verfasst am: 19.10.2016, 14:55     Titel: Rotate z-axis until stop button
  Antworten mit Zitat      
Hallo,
leider komme ich nicht weiter. Ich möchte den Plot um die Z-Achse rotieren lassen. Daran scheitert es die ganze Zeit.
und das ganze solange, bis jemand den 'Stop' Button drückt. Zudem soll der uicontrol dann ein Grafik-Handle zurückliefern, dessen Property „value“ den Wert 0 oder 1 besitzt, je nachdem ob der Button gedrückt wurde oder nicht.
Wie kann man dem uicontrol dass augeben lassen?

Vielleicht hat ja ein schlauer Kopf eine Idee.
Wäre dankbar um Hilfe!

Code:
function k= z
x=-10:0.2:10
y=-5:0.1:5;
[X,Y]=meshgrid(x,y);
r=sqrt(X.^2+Y.^2);
k=0.05;
a=cos(r);
b=(exp(-k.*r));
z=a.*b;
surf(z,'linestyle','none');
uicontrol('Style','pushbutton','String','Stop')
rotate(z, [0 0 1], 30)
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.10.2016, 17:39     Titel: Re: Rotate z-axis until stop button
  Antworten mit Zitat      
Hallo Pascal12,

Die Funktion soll wirklich "z" heißen und "k" zurückliefern?
Zitat:
Ich möchte den Plot um die Z-Achse rotieren lassen. Daran scheitert es die ganze Zeit.

Was genau ist "der Plot" und wie soll das Rotieren aussehen? Sollen alle einzelnen Linien gleichzeitig zu sehen sein, oder jeweils nur die aktuelle?

Zitat:
Zudem soll der uicontrol dann ein Grafik-Handle zurückliefern, dessen Property „value“ den Wert 0 oder 1 besitzt, je nachdem ob der Button gedrückt wurde oder nicht.

Den Handle des uicontrol bekommst Du schon bei dessen Erstellung. Den 'Value' kannst du beliebig abfragen, z.B. innerhalb einer Schleife.
Wohin soll was genau ausgegeben werden?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.10.16
Wohnort: Hessen
Version: R2014a
     Beitrag Verfasst am: 19.10.2016, 18:56     Titel:
  Antworten mit Zitat      
Hallo Jan,
danke, dass du dir Zeit nimmst.
Ja die Funktion habe ich nur den Namen k gegeben und sie soll z ausgeben. Sie hat mit der Variablen k in der Rechnung nichts zu tun.
Das funktioniert auch, sowie der Plot (mesh).
Ich möchte das die Darstellung (Plot) sich langsam um die vertikale Achse dreht. Das soll ich mit dem Befehl "rotate" machen.
Ich weiß nicht genau was ich dem Befehl rotate anhänge.

Der Wert Value soll im command window dann ausgegeben werden.
Entweder mit 0 oder 1. Also 0: ist Button nicht gedrückt worden und 1:
Button ist gedrückt worden. Brauche ich dann noch eine Schleife?
Unser Professor hat wirklich tolle Ideen, aber bei der Umsetzung bin ich mit meinem Kenntnisstand überfordert.
Viele Grüße
Pascal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.10.2016, 12:22     Titel:
  Antworten mit Zitat      
Hallo Pascal12,

Zitat:
Ja die Funktion habe ich nur den Namen k gegeben und sie soll z ausgeben.

Anders herum: Der Name ist "z" und "k" wird zurück gegeben. Solche Funktionsnamen sind verwirrend. Wenn dann noch intern eine Variable mit gleichem Namen verwendet wird, ist die Konfusion perfekt.

Zitat:
Ich weiß nicht genau was ich dem Befehl rotate anhänge.

Das klärt ein Blick in die Dokumentation:
Code:

Wenn die Bewegung anhält, bis der Button gedrückt wurde, wird also immer eine "1" ausgegeben, oder? Denn wenn der Button nicht gedrückt wurde, erfolgt ja auch keine Ausgabe, oder?

Zitat:
Brauche ich dann noch eine Schleife?

Ja, denn rotate rotiert die Daten nur einmalig, nicht kontinuierlich.
Code:
SurfH = surf(z,'linestyle','none');
ButtonH = uicontrol('Style','pushbutton','String','Stop');
while true
  rotate(SurfH, [0 0 1], 1);
  pause(0.2);
  if get(ButtonH, 'Value') == 1
    break;
  end
end

Hier mal ein Versuch. Ich denke, Du kannst es den Erfordernissen anpassen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.10.16
Wohnort: Hessen
Version: R2014a
     Beitrag Verfasst am: 20.10.2016, 12:54     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich werde es mal probieren. Danke für die Hilfe.

Gruß
Pascal
Private Nachricht senden Benutzer-Profile anzeigen
 
Pascal12
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.10.16
Wohnort: Hessen
Version: R2014a
     Beitrag Verfasst am: 20.10.2016, 13:00     Titel:
  Antworten mit Zitat      
Hallo Jan,

der Code funktionert sehr gut, nur möchte ich, dass die Rotation anhält wenn ich auf den Stop Button drücke.
Leider passiert nichts wenn ich daraufdrücke.

Bitte gib mir noch einen Hinweis.

Vielen Dank schonmal, das hat mir wirklich sehr geholfen.

Gruß
Pascal
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.10.2016, 13:38     Titel:
  Antworten mit Zitat      
Hallo Pascal12,

Der pushbutton ändert nicht seinen Wert. Verwende einen togglebutton.

Eigentlich wäre es hübscher, dem Button einen Callback zu geben, der mit setappdata einen Flag im GUI setzt. Dann würde aus der Schleife per getappdata dieses Flag abgefragt werden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 19.10.16
Wohnort: Hessen
Version: R2014a
     Beitrag Verfasst am: 20.10.2016, 14:10     Titel:
  Antworten mit Zitat      
Hallo Jan,

wie kann ich denn dem Button einen Callback geben?
Wo setzte ich setappdata hin und getappdata und mit welchen Werten, oder brauche ich keine Werte?
Mit dem Tooglebutton funktioniert es jetzt perfekt.

Viele Grüße und vielen Dank

Pascal
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 - 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.