|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 09.05.2018, 11:21
Titel:
|
|
Hallo,
1. So wie du es auch bisher machst.
2. Am besten sobald die Daten bekannt sind. Das passiert typischerweise in der StartupFcn oder im Callback eines Buttons oder Menüs, über das die Daten geladen werden.
3. Wie gesagt: in die Callbacks der Popupmenüs schreibst du das, was nach Auswahl einer Option passieren soll.
Grüße,
Harald
|
|
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.05.2018, 11:22
Titel:
|
|
Hallo,
ich komme leider nicht weiter mit dem hinterlegen der Zahlen des Popupmenus mit den richtigen Ellipsen.
Kannst du mir nicht ein code Beispiel geben?
Du meintest ja, ich soll in alle drei funktionen ( [code]function popupmenuLw1_Callback(hObject, eventdata, handles)[/code] jeweils den coder zum plotten der Ellipsen packen.
Ich weiß einfach nicht wie...
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.495
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 10.05.2018, 18:47
Titel:
|
|
Hallo,
Zitat: |
Kannst du mir nicht ein code Beispiel geben? |
Das wird wohl wenig helfen, aber mehr kann ich leider nicht schreiben ohne das konkrete Problem zu kennen.
Zitat: |
ich komme leider nicht weiter |
Und wieder ist die Frage: was versuchst du konkret (bitte Codebeispiel) und welche Probleme treten dabei auf?
Grüße,
Harald
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.05.2018, 09:06
Titel:
|
|
|
|
|
Ok,
ich weiß nicht, ob ich die Excel Datei aus dem Labor veröffentlich darf, deswegen hier eine abgespeckte Version. Die funktioniert zwar nur teilweise, sollte aber zur Verdeutlichung reichen.
Aaalso:
1. müsstest du die Excel-Datei in eine csv Datei ändern, die darf man hier nicht hochladen. (Oder in Line 89 des mainGui.m das *.csv ändern, aber wem sage ich das )
2. Wenn du das Programm ausführst, siehst du, das aktuell alle Ellipsen geplottet werden, genau das möchte ich aber nicht. Rechts neben dem Graphen siehst du meine 3 Popupmenu's. Diese sollen dazu dienen, den Lastwechsel auszuwählen, der geplottet wird.
Der Ablauf nach Programmstart sollte also in etwa sein:
- .csv Datei laden
- for-Schleife berechnet Regressionsparameter der Ellipse
- Tabelle wird mit Regressionsparametern gefüllt
- Benutzer wählt mit Hilfe der Popupmenu's aus, welche Ellipse geplottet wird.
Zu den Popupmenu's: es sollen immer auch nur 3 Ellipsen angezeigt werden. Also wenn ich in Popupmenu 1 den 110. Lw anwähle und danach den 58. soll der 110. wieder verschwinden.
Ich hoffe, das du mir mit den Infos helfen kannst. Danke schon einmal für deine Mühen.
VG
Fabian
Edit: Aufgrund meines gefährlichen Halbwissen bzgl. MatLab habe ich einen sehr unsauberen Programmierstil. Ich hoffe du steigst dennoch durch.
Beschreibung: |
|
Download |
Dateiname: |
MatLabForum.xls |
Dateigröße: |
1.01 MB |
Heruntergeladen: |
451 mal |
Beschreibung: |
|
Download |
Dateiname: |
mainGui.fig |
Dateigröße: |
28.88 KB |
Heruntergeladen: |
428 mal |
Beschreibung: |
|
Download |
Dateiname: |
mainGui.m |
Dateigröße: |
15.27 KB |
Heruntergeladen: |
446 mal |
|
|
|
Goraker |
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 04.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 11.05.2018, 10:15
Titel:
|
|
|
|
|
Damit kann ich jetzt etwas anfangen.
Dein Problem ist, das du dein Plot variablen xRotation und yRotation in der Forschleife immer wieder überschreibst und diese direkt in der Schleife Plottest.
mein Vorschlag ist daher:
definiere am Anfang
Am Ende deiner For-Schleife fügst du dann anstatt dem Plot Befehl
das Ergibt dann zwei 1000x67 Matrizen in denen alle Ellipsen stehen.
im nächsten Schritt kannst du dann NACH der For-Schleife (Wichtig: Außerhalb)
Deine Ellipsen plotten
Die Zahlen ersetzt du dann am besten mit den Variablen, die du aus deinen Popups bekommst. (Die Variable habe ich auf die schnelle nicht gefunden)
Für das Updaten haben ich eine Frage. Willst du direkt nach der Auswahl der Ellipse die axes1 aktualisieren oder willst du alle drei Popups anpassen und bei betätigen des Update-Buttons soll alles aktualisiert werden?
Im Fall zwei wurde ich das in das Push-Button menü schreiben
Hier natürlich ebenfalls die variablen der PopUps einfügen anstatt der Zahlen
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.05.2018, 13:54
Titel:
|
|
|
|
|
Hallo,
der Button ist noch ein Überbelibsel aus vorherigen Versuchen. Der soll eigentlich weg.
axes1 soll sich demnach von selber Updaten, sobald man einen anderen Lastwechsel auswählt.
So sieht das jetzt aus:
[code]for i = 1:handles.ngroups-1
handles.Daten = handles.files(handles.groupends(i)+1:handles.groupends(i+1),[9 10])
guidata(hObject, handles);
% tableDaten(i, = handles.Daten;
handles.x_all = [];
handles.y_all = [];[/code]
Vor dem Ende der for-Schleife
[code]
handles.x_all = [handles.x_all, xRotated];
handles.y_all = [handles.y_all, yRotated];
end
[/code]
Und der aktuell noch vorhandene Pushbutton:
[code]
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% axes(handles.axes1);
% popup_index = get(handles.popupmenuLw1, 'Value');
axes(handles.axes1);
cla(handles.axes1);
plot(handles.x_all(handles.popupmenuLw1,, handles.y_all(handles.popupmenuLw1,);
plot(handles.x_all(handles.popupmenuLw2,, handles.y_all(handles.popupmenuLw2,);
plot(handles.x_all(handles.popupmenuLw3,, handles.y_all(handles.popupmenuLw3,);
[/code]
Wenn ich nun die Lastwechsel wähle und auf Update drücke, kommt folgendes:
Function 'subsindex' is not defined for values of class 'matlab.ui.control.UIControl'.
Error in mainGui>pushbutton5_Callback (line 437)
plot(handles.x_all(handles.popupmenuLw1,, handles.y_all(handles.popupmenuLw1,);
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in mainGui (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)mainGui('pushbutton5_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.
|
|
|
Goraker |
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 04.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 11.05.2018, 14:10
Titel:
|
|
Setzte mal in die Fehlerzeile 437 einen Breakpoint und lasse das Programm da hin Laufen.
Und dann geben im Command Window mal nacheinander die Variablen ein und schau ob Sie das ergeben das sie sein sollten.
Schreib dann am besten welchen richtig sind und bei denen, die falsch sind, den kompletten Fehler.
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 13.05.2018, 20:22
Titel:
|
|
Hallo Goraker,
[code]
handles.popupmenuLw1
handles.popupmenuLw2
handles.popupmenuLw3
handles.x_all(10,[/code]
Dies führt er alles ohne Probleme aus, aber bei
[code]handles.x_all(handles.popupmenuLw1,[/code]
heißt es
"K>> handles.x_all(handles.popupmenuLw1,
Function 'subsindex' is not defined for values of class 'matlab.ui.control.UIControl'."
|
|
|
Goraker |
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 04.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 14.05.2018, 07:20
Titel:
|
|
Bekommst du für handles.popupmenuLw1 auch das hier?
Du musst in dem Fall noch definieren was genau du haben willst. da du nur den Wert von Value haben willst
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2018, 08:48
Titel:
|
|
|
|
|
Hallo,
also ich habe den pushbutton_callback jetzt so geändert:
[code]% Update figure
function pushbutton5_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton5 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% axes(handles.axes1);
% popup_index = get(handles.popupmenuLw1, 'Value');
cla(handles.axes1);
axes(handles.axes1);
plot(handles.x_all(handles.popupmenuLw1.Value,, handles.y_all(handles.popupmenuLw1.Value,);
plot(handles.x_all(handles.popupmenuLw2.Value,, handles.y_all(handles.popupmenuLw2.Value,);
plot(handles.x_all(handles.popupmenuLw3.Value,, handles.y_all(handles.popupmenuLw3.Value,);[/code]
Ich erhalte zwar keinen Fehler mehr, wenn ich in dem GUI jetzt beim Popupmenu andere Lw auswähle, allerdings passiert auch nichts.
Und wie gesagt, es soll eigentlich ohne den Update Knopf funtkionieren. Am liebsten wäre es mir, wenn die axes sich jedes mal von selbst aktualisiert, wenn ich einen anderen Lw auswähle.
|
|
|
Goraker |
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 04.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 14.05.2018, 09:23
Titel:
|
|
Der Updateknopf bewirkt gar nichts?
Theoretisch müsste der Code des Updateknopfs auch in den drei Popupmenus funktionieren. Das habe ich aber noch nie ausprobiert
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2018, 09:42
Titel:
|
|
Die x und y Skalierung ändert sich, es wird aber keine Ellipse geplottet :/
Kannst du mir erklären, was der Tipp von Harald auf sich hat, mit x_all und y_all?
Ich habe versucht es nachzuvollziehen, komme aber nicht drauf.
Warum wird das ein 1000 Zeilen langer Vektor?
Der wird übrigens in jedem Schleifendurchlauf überschrieben, vielleicht liegt da der Fehler?
Zuletzt bearbeitet von Nester am 14.05.2018, 09:59, insgesamt einmal bearbeitet
|
|
|
Goraker |
Forum-Anfänger
|
|
Beiträge: 30
|
|
|
|
Anmeldedatum: 04.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2016b
|
|
|
|
|
|
Verfasst am: 14.05.2018, 09:53
Titel:
|
|
Weches Ergebnis bekommst du jetzt über Brakpoints, wenn du
handles.x_all(handles.popupmenuLw1.Value,
und
handles.popupmenuLw1.Value
eingibst?
|
|
|
Nester |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 29
|
|
|
|
Anmeldedatum: 17.04.18
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.05.2018, 10:05
Titel:
|
|
Ich bin soo doof...
Ich habe Haralds Hinweis nicht genau gelesen..
Ich dachte mit "definiere am Anfang x_all= [];" meint er, am Anfang der for-schleife...
Ich habe dann mit dem Debugger herausgefunden, das er x_all immer wieder überschreibt...
Ich habe x_all jetzt vor der for-schleife definiert und siehe da, es funtkioniert.
Ich denke, ich bin jetzt erstmal fertig. Melde mich aber, wenn ich wieder Hilfe brauche.
Tausend dank an Goraker und Harald für eure Hilfe !
Edit: Wie kann ich denn jetzt "einstellen", das er nur die Ellipse des ersten Popupmenus löscht, wenn ich dort einen anderen Lw wähle.
wenn ich "cla(handles.axes1)" in alle drei callbacks schreibe, löscht er immer alle Ellipsen beim neu auswählen!
|
|
|
|
Gehe zu Seite Zurück 1, 2, 3
|
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.
|
|