|
|
Testfunktion zum Lösen von ODEs |
|
Chefkoch |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 00:31
Titel:
|
 |
|
 |
|
Super, so sieht das ganze schon besser aus.
Ich habe mich am Wochenende ein wenig mit GUIs beschäftigt. Ich würde das jetzt gerne über ein GUI eingeben lassen können.
Das heißt ich habe folgende Bauseteine
1 x listbox - zur Auswahl der verschiedenen solver
3 x edit text - zur Eingabe des Namens einer bereits hinterlegten DGL, sowie die Eingabe von timespan und start
Ich habe dafür mal die verschiedenen Callback Funktionen erstellt.
Callback der solver:
Callback der Funktion:
Callback der Anfangswerte:
Callback des Zeitfensters
Sind damit nun alle für die Funktion zu übergebenden Parameter bekannt?
Dann könnte ich doch durch den Aufruf von:
die Lösung berechnen? Außerdem würde ich die Lösung gerne erst berechnen lassen, sobald man auf einen PushButton drückt.
Das funktioniert leider noch nicht so ganz, führe ich die GUI aus (im Moment noch ohne PushButton) erhalte ich die Fehlermeldung:
Undefined variable "handles" or class "handles.data.solvers".
Wo liegt mein Fehler?
Viele Grüße
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 11:59
Titel:
|
 |
Hallo,
bitte poste die Dateien (.m und .fig) hierzu.
Die entscheidende Frage ist: wo rufst du test auf?
Grüße,
Harald
|
|
|
Chefkoch |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 18:22
Titel:
|
 |
Hallo,
anbei mein bisheriger Ansatz.
Ich rufe die Funktion Test im Moment im Callback des Pushbuttons auf.
Viele Grüße
Beschreibung: |
|
 Download |
Dateiname: |
funcgui.m |
Dateigröße: |
7.31 KB |
Heruntergeladen: |
210 mal |
Beschreibung: |
|
 Download |
Dateiname: |
funcgui.fig |
Dateigröße: |
3.36 KB |
Heruntergeladen: |
193 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 20:47
Titel:
|
 |
Hallo,
du musst die Informationen schon aus der Handles-Struktur herausholen, z.B. so:
Dann muss auch sichergestellt werden, dass die Informationen wirklich gesetzt worden sind - also entweder muss das in die OpeningFcn oder anderweitig sichergestellt werden.
Grüße,
Harald
|
|
|
Chefkoch |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 23:33
Titel:
|
 |
Ok, aber wie setze man diese? Werden dafür einfach die handles in der Openingfcn aufgerufen?
Viele Grüße
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 23:36
Titel:
|
 |
Hallo,
genauso wie du sie auch in den anderen Funktionen gesetzt hast. Nur will man üblicherweise sicherstellen, dass die Informationen auch bereitgestellt werden, ohne dass vorher andere Eingaben gemacht werden.
Grüße,
Harald
|
|
|
Chefkoch |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 23:43
Titel:
|
 |
OK ich hab das jetzt in die openingFcn eingefügt, erhalte jetzt diese Fehlermeldung. Irgendwie ist mir das mit dem GUI noch nicht ganz geheuer.
Reference to non-existent field 'data'.
Error in funcgui>funcgui_OpeningFcn (line 60)
handles.data.solvers;
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.12.2013, 23:57
Titel:
|
 |
|
|
Chefkoch |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.12.2013, 11:54
Titel:
|
 |
|
 |
|
Hallo nochmal,
ich habe mich nochmal mit dem Thema befasst und bin auch etwas vorangekommen. Ich kann jetzt die Daten für die Funktion, Anfganswerte und Zeitbereich angeben und diese werden auch ausgegeben.
Auch das mit der Auswahl der solver funktioniert.
Leider erhalte ich beim drücken des Buttons noch eine Fehlermeldung.
Indexing cannot yield multiple results.
Error in test (line
[t,y] = odefun(func, timespan, init);
Mein Button Callback sieht wie folgt aus:
Setze ich ein @ vor handles.solvers und handles.func so erhalte ich folgende Fehlermeldung:
Cell contents reference from a non-cell array object.
Error in test (line 7)
odefun = solvers{I};
Was stimmt nicht? Ich lade anbei meine entsprechenden Dateien mit hoch.
Besten Dank!
Viele Grüße
Beschreibung: |
|
 Download |
Dateiname: |
funcgui.m |
Dateigröße: |
7.97 KB |
Heruntergeladen: |
208 mal |
Beschreibung: |
Lösung der Funktion mit Plot |
|
 Download |
Dateiname: |
Funktion1_Skript.m |
Dateigröße: |
169 Bytes |
Heruntergeladen: |
195 mal |
Beschreibung: |
|
 Download |
Dateiname: |
Funktion1.m |
Dateigröße: |
66 Bytes |
Heruntergeladen: |
189 mal |
Beschreibung: |
Aufruf von test mit Parametern |
|
 Download |
Dateiname: |
dgltest.m |
Dateigröße: |
139 Bytes |
Heruntergeladen: |
198 mal |
Beschreibung: |
Funktion zum Lösen der DGL |
|
 Download |
Dateiname: |
test.m |
Dateigröße: |
348 Bytes |
Heruntergeladen: |
209 mal |
|
|
|
Chefkoch |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.12.2013, 11:57
Titel:
|
 |
Oh das .fig File fehlt noch
Beschreibung: |
|
 Download |
Dateiname: |
funcgui.fig |
Dateigröße: |
3.37 KB |
Heruntergeladen: |
183 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.12.2013, 21:16
Titel:
|
 |
Hallo,
die Initialisierung des Solvers sollte so lauten:
Das ist dann konsistent damit, wenn eine Auswahl getroffen wird.
Desweiteren ist die Auswahl des Solvers ein String bzw. ein Cell Array von Strings, du brauchst aber ein Function Handle --> da hilft str2func:
Das Problem sollte sich aber im Debugger zumindest leicht erkennen lassen.
Bitte bei so vielen einzelnen Dateien alles zippen und dann das .zip hochladen.
An der Nutzbarkeit der GUI kann man übrigens noch arbeiten. Das ist sonst ein Ratespiel für unwissende, wie die Funktion und das Zeitintervall eingegeben werden müssen.
Grüße,
Harald
|
|
|
|
Gehe zu Seite Zurück 1, 2
|
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.
|
|