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

Umgehen des Befehls wait zur Automatisierung

 

Gas-08
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2013, 07:50     Titel: Umgehen des Befehls wait zur Automatisierung
  Antworten mit Zitat      
Guten Morgen,
ich hab mal wieder ein kleines Problem und hoffe, dass mir jemand helfen kann.
Ich möchte das 2. Wait in meinem Programm so ändern das es automatisch weiter läuft und nicht auf eine Benutzereingabe wartet. Kann mir jemand bei meinem Problem helfen????


Code:
clear all



figure, imshow('pout.tif');
h = impoint(gca,[]);
position = wait(h);

r=20;
xmin=position(1)-r;
ymin=position(2)-r;
width=2*r;
height=2*r;

h2=imellipse(gca, [xmin ymin width height]);

position2 = wait(h2);  % <---- DAS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


hold on
fill (position2(:,1),position2(:,2),'r')
hold off;

F = getframe;

MyBild = F.cdata;

figure, imshow(MyBild)
 


Gas-08
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 30.04.2013, 08:17     Titel:
  Antworten mit Zitat      
Die Frage ist, was das WAIT überhaupt ist. Jedenfalls kein Standard MATLAB Befehl Smile

Hilft
Code:

für diesen Fall?

Andreas
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: 30.04.2013, 10:57     Titel: Re: Umgehen des Befehls wait zur Automatisierung
  Antworten mit Zitat      
Hallo Gas-08,

Meine übliche Randbemerkung:
Neben anderen unnützlichen aber zeitraubenden Dingen, löscht "clear all" auch alle Breakpoints. Für das Debuggen ist das vernichtende und folglich eine wirklich schlechte Idee, wenn man funktionierende Programme erstellen möchte. Es ist deshalb wirklich verblüffend, dass das in so vielen Codes von Programmier-Anfängern auftaucht. Hat dich ein Lehrbuch oder ein Dozent auf die Idee gebracht, beim Programmstart erstmal alles radikal zu löschen?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2013, 12:23     Titel:
  Antworten mit Zitat      
Also wait ist ein MATLAB Befehl. Aber wenn ich ihn weglasse bekomme ich nicht die Punkte.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 30.04.2013, 12:52     Titel:
  Antworten mit Zitat      
Was kommt hierbei raus?:
Code:


Andreas
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: 30.04.2013, 12:58     Titel:
  Antworten mit Zitat      
Hallo Gas-08,

Nun können wir weder erraten, was der WAIT-Befehl macht, noch was genau "Punkte" sind: vielleicht Koordinaten, oder Übungs-Punkte für die Klausur.

Da wir logischerweise keinen Änderungsvorschlag für einen Befehl machen können, den wir nicht kennen, schlage ich vor, du erklärst uns, was WAIT macht. Aber es wäre wohl besser, du postest auch den Code hier, ansonsten könnte eine Änderung ja immer noch sher schwierig sein, oder?

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

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2013, 13:32     Titel:
  Antworten mit Zitat      
Also eine Beschreibung gibt es unter:
http://www.mathworks.de/de/help/matlab/ref/wait.html

Ich verzichte jetzt mal darauf die Seite zu kopieren um die hier einzufügen.

Und im Beispiel 2 wird es hier benutzt.

Code:
figure, imshow('pout.tif');
h = imellipse;
position = wait(h);


http://www.mathworks.de/de/help/images/ref/imellipse.html


wait wartet auf eine Benutzereingabe. Bei mir oben für die Befehle h und h2 die in einer Variablen stehen.
Und die Benutzereingabe für h2 soll umgangen werden.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gas-08
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.04.2013, 13:58     Titel:
  Antworten mit Zitat      
Also noch einige Infos zu meinem Programm.
Ich will um einen Punkt der mit der Maus ausgewählt wird einen gefüllten greis erzeugen.
Der Punkt wird wie folgt erzeugt:

Code:
figure, imshow('pout.tif');
h = impoint(gca,[]);
position = wait(h);


wait(h) wartet mit dem Programm bis ich den Punkt mit einem Doppel Klick ausgesucht habe.

jetzt erzeuge ich einen Kreis um diesen Punkt um die Koordinaten abzugreifen.

Code:
r=20;
xmin=position(1)-r;
ymin=position(2)-r;
width=2*r;
height=2*r;

h2=imellipse(gca, [xmin ymin width height]);

position2 = wait(h2);


Jetzt wartet Matlab wieder auf eine Bestätigung das der Kreis richtig erzeugt ist. Das passiert durch dieses wait. Und auf diese Bestätigung will ich verzichten.

Zum Schluss wird ein Kreis auf das Bild mit Hilfe der Koordinaten aus Funktion zuvor erzeugt.


Code:
hold on
fill (position2(:,1),position2(:,2),'r')
hold off;

F = getframe;

MyBild = F.cdata;

figure, imshow(MyBild)


Wenn jemand eine andere Idee hat wie ich Bereiche in einem Bilder mit einem gefüllten Kreis überdecken kann ist das auch ok.
Private Nachricht senden Benutzer-Profile anzeigen
 
Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 30.04.2013, 15:53     Titel:
  Antworten mit Zitat      
Oh, es ist DOCH standard MATLAB. Wie peinlich... Embarassed
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 30.04.2013, 17:12     Titel:
  Antworten mit Zitat      
Zitat:

Code:
r=20;
xmin=position(1)-r;
ymin=position(2)-r;
width=2*r;
height=2*r;

h2=imellipse(gca, [xmin ymin width height]);


position2 = wait(h2);
Funktion ohne Link?


Jetzt wartet Matlab wieder auf eine Bestätigung das der Kreis richtig erzeugt ist. Das passiert durch dieses wait. Und auf diese Bestätigung will ich verzichten.


Hallo
Du kannst doch den 2. WAIT-Befehl einfach weglassen. Warum tust das nicht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gas-08
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 09.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.05.2013, 07:48     Titel:
  Antworten mit Zitat      
Aber am Anfang steht der komplette Code.

Ich hab gerade gesehen das ich bei dem Kommentar drüber den folgenden Befehl vergessen habe:
Code:
h2=imellipse(gca, [xmin ymin width height]);



Dann gibt er mir aber nicht die Koordinaten (Stütz Punkte) zurück.

Weil Matlab speichert den Befehl in eine Variabel

Code:
h2=imellipse(gca, [xmin ymin width height]);


und ich muss ihn ja dann ausführen.

Da liegt das Problem. Die Ausführung wird sonst durch ein Doppel Klick vom Benutzer bestätigt bzw. gestartet.
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: 02.05.2013, 09:25     Titel:
  Antworten mit Zitat      
Hallo Andreas,

In der neuesten Matlab-Version gibt es tatsächlich mehrere WAIT-Befehle: Data Acquisition Toolbox, OPC-Toolbox, Parallel-Computing-Toolbox (wait for GPU), wait(TimerObj) und das hier wohl gemeinte wait aus der Image Acquisition Toolbox.

Nun wäre es, ich komme immer wieder mal darauf zurück, sehr praktisch, wenn man in den jeweiligen Doc-Texten eine Bemerkung fände, seit welcher Matlab-Version die Befehle existieren und eine Liste der Änderungen.

Auf z.B. http://www.mathworks.com/help/imaq/wait.html finde ich keinen Link auf die anderen wait's. Das wäre aber ausgesprochen praktisch.

Viele Grüße, Jan
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.