|
|
Manueller Schleifendurchlauf per Button |
|
severin |
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 28.08.12
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2012, 08:54
Titel: Manueller Schleifendurchlauf per Button
|
|
|
|
|
Hallo und guten Morgen.
Ich bin Student der Angewandten Mathematik und arbeite derzeit an einem Projekt in Matlab. Leider hatte ich bislang nur ein Semester Matlab und in diesem war keine GUI Programmierung enthalten. Mein Professor wünscht sich nun allerdings ein paar kleine "Spielereien".
Ich habe mich bereits über mehrere Tage durchs Forum geforstet und konnte einiges selbst beheben, allerdings bin ich nun mit meinem Latein am Ende und hoffe, dass mir hier der ein oder andere einen Tipp geben kann.
Im Wesentlichen geht es um eine Berechnung des LR-Algorithmus. Dieser ist als reines Programm absolut funktionstüchtig. Nun wünscht sich mein Prof. allerdings eine Oberfläche, in der 3 Buttons zur Verfügung stehen.
Weiter, Ergebnis und Exit.
Der Ergebnis Button, sowie der Exit Button funktionieren ohne große Fehler. (Der Exit Button erzeugt einen Fehler, den ich sehr häufig im Netz gefunden habe. Ich konnte ihn allerdings ebenfalls nicht beheben, er ist aber auch so funktionstüchtig.)
Mein eigentliches Problem besteht darin, dass ich gern den "Weiter" Button klicken möchte, damit er einen weiteren Schleifendurchlauf erzeugt. Das Programm befindet sich im Anhang. Im Wesentlichen weiß ich, was ich eigentlich tun müsste(hoffe ich jedenfalls), kann es aber nicht implementieren, da mir die Ideen dazu fehlen.
Eine Matrix (A genannt) wird vorher über die Konsole manuell eingelesen.
Eigenartig ist dabei, das dies nur nach 3-4 Versuchen zu Beginn funktioniert. Sprich ich gebe sie ein und das Programm erzeugt einen Fehler, nehme ich eine weitere und danach wieder die alte, funktioniert das Programm.
Ich hoffe ich habe genug Details zusammengetragen, damit mir vielleicht jemand auf die Sprünge helfen kann
Vielen Dank bereits im Voraus.
Die Ausgabe des "Weiter" Buttons soll im wesentlichen daraus bestehen:
Dieser befindet sich in der while-Schleife
Beschreibung: |
|
Download |
Dateiname: |
lr.m |
Dateigröße: |
5.53 KB |
Heruntergeladen: |
328 mal |
Beschreibung: |
|
Download |
Dateiname: |
lr.fig |
Dateigröße: |
2.55 KB |
Heruntergeladen: |
325 mal |
|
|
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 29.08.2012, 10:26
Titel: Re: Manueller Schleifendurchlauf per Button
|
|
Hallo Severin,
Herzlich willkommen bei Matlab und im Forum!
Bitte poste immer die kompletten Fehlermeldungen, wenn Du im Forum über Fehler berichtest. Dann ist im Allg. ein Lösungsvorschlag viel einfacher. Fehlermeldungen sind immer ein Zeichen für ein ernstes Problem, und "funktioniert trotzdem" ist keine effiziente Programmier-Strategie.
Professoren wünschen sich niemals Spielereien, sondern immer nützliche Design-Features. ;-)
Gruß, Jan
|
|
|
severin |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 28.08.12
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2012, 10:36
Titel:
|
|
Hallo, danke für den Willkommens Gruß
Dann fange ich doch direkt mal an. Der genaue Fehler, der beim klicken des Exit Buttons erscheint ist:
Weiterhin ist nach manueller Eingabe der Matrix und ausführung vom Button "Ergebnis" der Fehler:
Gebe ich allerdings die Matrix erneut ein, funktioniert es, allerdings auch nicht immer oO
|
|
|
Goofy9020 |
Forum-Century
|
|
Beiträge: 164
|
|
|
|
Anmeldedatum: 10.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 2009a, 2010b
|
|
|
|
|
|
Verfasst am: 29.08.2012, 13:16
Titel:
|
|
Also die zweite Fehlermeldung ist eindeutig :
wenn du bei dir eine Matrix mit der Größe 0 hast dann ist bei dir
n=0;
nachdem bei Matlab der erste Wert in einer Matrix bei 1,1 steht (Gegensatz z.B.: bei C# Matrix (Array) 0,0) kann Matlab auf diese stelle nicht zugreifen.
|
|
|
severin |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 28.08.12
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2012, 14:29
Titel:
|
|
Das verstehe ich schon. Aber ich deklariere doch eine Matrix A,bevor ich das Programm ausführe. Die Matrix ist auch aufrufbar. Er übernimmt diese allerdings nicht von beginn an in die lr.fig. Erst nachdem ich eine weitere Matrix eingebe lässt sich das Programm ausführen.
Ich stehe halt bei diesem Fehler auf dem Schlauch :/
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 29.08.2012, 16:21
Titel:
|
|
Hallo severin,
In solchen Fällen ist der Debugger eine sehr gute Hilfe. Entweder lasse Matlab beim Auftreten eines Fehlers stoppen, so dass du Dir die Werte der Variablen anzeigen lassen kannst - dazu im CommandWindow eingeben:
[code]dbstop if error[code]
Oder setze einen Breakpoint an den Anfang deines Programms und gehe dann Zeile für Zeile durch den Code um zu sehen, was genau wo passsiert.
Mit etwas Übung wird das Debuggen dann schnell zur sher handlichen und nützlichen Hilfe beim Programmieren.
Gruß, Jan
|
|
|
severin |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 28.08.12
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 29.08.2012, 16:34
Titel:
|
|
Ok danke für den Hinweis. Damit habe ich ein Problem schonmal behoben bekommen. Ich setzte A einfach direkt im Command Window als globale Variable und danach erzeuge ich meine Matrix. Gibt es dafür vielleicht noch eine Möglichkeit dies mit ins Programm zu integrieren, damit ich sie nicht jedesmal beim Programmstart global setzen muss?
Der Fehler im Exit lautet im aktuellen Fall übrigenns:
Allerdings wird er mir in der gui_mainfcn.m angezeigt :/
Gruß Patrick
|
|
|
Marco H. |
Forum-Guru
|
|
Beiträge: 404
|
|
|
|
Anmeldedatum: 12.11.10
|
|
|
|
Wohnort: Dortmund
|
|
|
|
Version: 2010a/2012b
|
|
|
|
|
|
Verfasst am: 29.08.2012, 20:52
Titel:
|
|
Hey,
ist eigentlich ganz einfach. Du hast sicherlich im GUIDE eine figure1_DeleteFcn definiert, die du im m-File aber wieder gelöscht hast. Das geht natürlich nicht und führt beim schließen der GUI zu der Fehlermeldung...
Warum lässt du nicht einfach den User in deiner GUI eine Matrix definieren? Alles was du im Command Window machen kannst kannst du auch in deiner GUI. Alternativ kannst du natürlich den User im Command Window eine Variable definieren lassen die du mit deiner GUI öffnen kannst.
z.B.
Globale Variablen würde ich immer vermeiden...
Greetings
|
|
|
severin |
Themenstarter
Forum-Newbie
|
|
Beiträge: 5
|
|
|
|
Anmeldedatum: 28.08.12
|
|
|
|
Wohnort: Leipzig
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.08.2012, 13:16
Titel:
|
|
Hallo.
Danke Marco für den Hinweis, jetzt funktioniert der Exit Button. Habe die gui einfach neu erstellt. Ich glaube ich erinnere mich auch noch daran wie ich den Tag des Mainframes geändert habe, darin lag wohl der Fehler. Jedenfalls funktioniert es nun
Jetzt sitze ich leider aber immernoch qualmend über dem Problem des manuellen Schleifendurchlaufes
|
|
|
|
|
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 - 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.
|
|