|
|
Matlab GUI getting started |
|
SparX |
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.08.2018, 08:43
Titel: Matlab GUI getting started
|
|
Hallo Matlab-Forum,
ich bin neu in der Welt der GUI-Entwicklung und muss für mein Projekt ein GUI programmieren.
Hierfür habe ich in den letzten Monaten ein Matlab-Skript entwickelt, das den Kraftstoffverbrauch für verschiedene Fahrzyklen berechnen kann. Für dieses Skript würde ich dazu gerne ein grafische Oberfläche erstellen.
Das Matlab-Skript besitzt dabei mehrere Eingabewerte und Auswahlmöglichkeiten zu Fahrzyklen und abhängigen Größen sowie die eigentlichen Berechnungen, die für den Verbrauch benötigt werden.
Ist es möglich den Code aus dem Matlab-Skript in ein GUI einfach zu übertragen? Bisher habe ich versucht ein paar Tutorials nachzuprogrammieren, aber bisher eher erfolglos, da ich mich nicht mit objektbezogener Programmierung auskenne.
Gruß,
SparX
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.08.2018, 09:08
Titel:
|
|
Hallo,
hast du dir mal das Tutorial von App Designer angesehen?
und dann Open --> Interactive Tutorial.
Bei konkreten Fragen kannst du dich ja melden.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.08.2018, 10:47
Titel:
|
|
Hallo Harald,
die Frage ist, wie ich die einzelnen Objekte mit meinem Matlab-Code belegen kann. Das Tutorial ist zwar interessant, aber sehr kurz und hilft mir da nicht wirklich weiter. Ich kann das GUI zwar mit Objekten belegen wie es mir vorstelle, aber keine Funktionen zuordnen.
Gruß,
SparX
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 24.08.2018, 11:08
Titel:
|
|
Hallo,
es gibt an verschiedenen Stellen (im Design View rechts unten, im Code View links oben) die Möglichkeit, Callbacks für Objekte hinzuzufügen.
Auf Youtube:
https://www.youtube.com/watch?v=nQb0qBiDurU
https://www.youtube.com/watch?v=cl0AcnN3Bmk (ab Minute 36)
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2018, 07:48
Titel:
|
|
Guten Morgen,
nachdem ich jetzt die ein paar weitere Tutorials gesehen habe, habe ich doch noch ein paar Fragen.
In allen Tutorials werden bisher nur einfache Zahlenbeispiele gezeigt, aber keine Rechnungen mit Vektoren. Können diese auch "so einfach" wie in Matlab ausgeführt werden?
Können for-Schleifen genauso programmiert werden wie in Matlab selbst?
Auch habe ich den import von Daten aus Excel-Tabellen noch nicht genau verstanden.
Kann ich meine gewünschten Variablen genau wie in Matlab über
bestimmen?
Grüße,
SparX
Zuletzt bearbeitet von SparX am 27.08.2018, 08:02, insgesamt einmal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2018, 08:00
Titel:
|
|
Hallo,
in den Callbacks kannst du "ganz normal" wie sonst auch in MATLAB arbeiten.
Wenn du schon Funktionen geschrieben hast, kannst du sie insbesondere auch aus App Designer heraus aufrufen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2018, 08:07
Titel:
|
|
Hallo,
wäre das dann der richtige Weg?
Edit: Okay, das Definieren der Variable v_NEFZ scheint so wohl nicht zu funktionieren.
Gruß
Zuletzt bearbeitet von SparX am 27.08.2018, 08:20, insgesamt einmal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2018, 08:16
Titel:
|
|
Hallo,
insofern, dass du eine private Funktion hinzugefügt hast: ja.
Die Frage ist aber, wo Daten wie v_NEFZ_mean herkommen sollen.
Oft ist es so, dass die Daten über eine Schaltfläche geladen werden. Dann kannst du zusätzliche properties anlegen, so dass die Daten innerhalb der App gespeichert bleiben. Über app.<property> kannst du dann wieder an die Daten herankommen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2018, 08:33
Titel:
|
|
Die Daten sollen aus einer externen Exceltabelle geladen werden, die NEFZ heißt.
Aus dieser Tabelle sollen dann verscheidene Vektoren als input erstellt werden. Allerdings kann ich bisher nicht die Reihen der Exceltabelle angeben, in denen sich die Daten befinden.
In Matlab geht das je ganz schnell über
aber im App Designer gibt es wohl diese Funktion nicht. Gibt es etwas ähnliches?
Edit: Habe gerade gesehen, dass es den Befehl
gibt. Werde es mal damit probieren.
Edit2: Habe es bisher mal mit
probiert. Werden die benötigten Vektoren dann automatisch geladen?
Gruß
Zuletzt bearbeitet von SparX am 27.08.2018, 09:23, insgesamt 2-mal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2018, 09:06
Titel:
|
|
Hallo,
Zitat: |
aber im App Designer gibt es wohl diese Funktion nicht. |
Wie kommst du darauf? xlsread kannst du auch in App Designer verwenden.
In der Range ist allerdings ein : zuviel.
Die Idee von
uigetfile
ist, dass man interaktiv einen Dateinamen auswählt. Als Filter würde ich etwas wie '*.xlsx' angeben. Kompletter Dateiname ist unüblich.
Anschließend muss die Datei dann noch verarbeitet werden, z.B. mit xlsread.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2018, 09:31
Titel:
|
|
Als ich die Befehle aus Matlab 1:1 kopiert habe, zeigte mir die App an, dass bspw. die Geschwindigkeit v_NEFZ nicht definiert wäre. Daher ging ich davon aus, dass xlsread nicht funktioniert.
An sich möchte ich auch nicht irgendwelche Files reinladen, sondern die von mir erstellten. Daher habe ich die Namen komplett angegeben.
Allgemein komme ich auch nicht mit den Befehlen klar. Ich kann z.B. mir auch keinen plot erstellen, den ich mit dem Drücken eines Buttons erst erstellen möchte, da ich die zusammenhänge der Befehle innerhalb des App Designers noch nicht verstehe.
Gruß
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2018, 09:46
Titel:
|
|
Hallo,
Zitat: |
Als ich die Befehle aus Matlab 1:1 kopiert habe, zeigte mir die App an, dass bspw. die Geschwindigkeit v_NEFZ nicht definiert wäre. |
Wie gesagt:
Zitat: |
Dann kannst du zusätzliche properties anlegen, so dass die Daten innerhalb der App gespeichert bleiben. Über app.<property> kannst du dann wieder an die Daten herankommen. |
Zitat: |
An sich möchte ich auch nicht irgendwelche Files reinladen, sondern die von mir erstellten. Daher habe ich die Namen komplett angegeben. |
.m-Dateien solltest du aber nicht "reinladen", sondern ausführen.
Zitat: |
Ich kann z.B. mir auch keinen plot erstellen |
Geht wie in MATLAB auch. Du musst nur als erstes Argument ein axes angeben, z.B. app.UIAxes1
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2018, 10:20
Titel:
|
|
Also reicht es nachdem ich die input-Variablen in der App über eine Eingabe definiert habe das .m-File auszuführen?
Muss dann das .m-File dann in die Funktion eines Buttons integriert werden oder an eine andere Stelle.
Das hat mir bisher sehr geholfen. Ich hatte die Befürchtung, dass ich alles nochmal komplett neu programmieren müsste.
Benötigt man dann für das Ausführen des .m-Files einen neuen Befehl? Ist es dann wichtig wann die Eingabe erfolgt? Im Matlab-Skript müssen die Variablen ja vor den Gleichungen definiert werden.
Gruß
Zuletzt bearbeitet von SparX am 27.08.2018, 10:32, insgesamt einmal bearbeitet
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2018, 10:31
Titel:
|
|
|
|
|
Hallo,
Zitat: |
Also reicht es nachdem ich die input-Variablen in der App über eine Eingabe definiert habe das .m-File auszuführen? |
Die Frage ist, was du mit input-Variablen und Eingabe meinst. Die Callbacks haben getrennte Arbeitsbereiche. Wie du damit umgehen kannst, siehe vorherige Antwort.
Zitat: |
Muss dann das .m-File dann in die Funktion eines Buttons integriert werden oder an eine andere Stelle. |
Ich würde .m-Dateien nicht integrieren, sondern aufrufen. Wenn eine Funktion als Reaktion auf das Drücken eines Buttons ausgeführt werden soll, dann musst du sie im Callback dieses Buttons aufrufen.
Zitat: |
Benötigt man dann für das Ausführen des .m-Files einen neuen Befehl? |
Nein. Du kannst Skripte oder Funktionen genauso aufrufen wie z.B. vom Command Window. Ich würde Funktionen bevorzugen, weil dort die Schnittstelle (Ein- und Ausgabeargumente) klar definiert ist. Beim Funktionsaufruf musst du dann die benötigten Inputs an die Funktion übergeben und die benötigten Outputs zurückholen, also z.B.
Wenn a - d Eigenschaften der App sind, dann
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
SparX |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 47
|
|
|
|
Anmeldedatum: 11.07.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2018, 11:41
Titel:
|
|
Okay, nehmen wir an ich habe 2 Eingabefelder, die mit zahlenwerten belegt werden müssen und das Matlab-Skript soll dann mit Hilfe eines Buttons ausgeführt werden.
Ist dann der Code so richtig:
Greift dann das kraftstoffverbrauch-Skript so direkt auf die Eingaben a und b zu?
Gruß
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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 - 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.
|
|