Verfasst am: 19.11.2016, 11:53
Titel: Gui - Pushbutton - Ergebnisse in Static text ausgeben
Hallo,
ich habe folgendes Problem bei einem Gui:
ich führe mit einem Pushbutton verschiedene Rechnungen mit einer Matrix durch. Nun möchte ich die einzelnen rechenbefehle (z.b. D=1/M, D=3*M) untereinander im static text auflisten, falls diese ausgewählt worden sind und mithilfe des pushbuttons bestätigt wurden.
Das ist auch ganz einfach eigentlich:
aber sobald ich den Pushbutton wieder betätige wird der static text nicht ergänzt sondern überschrieben.
Code:
function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
A = get(handles.popupmenu1,'Value'); %Rechenbefehl aus Popupmenü
%1:Multiplikation
%2: Division
if A == 1;
M = a*M
text = sprintf(' %s * %d\n',A, a);
elseif Aswhl2 == 2;
M = a/M
text = sprintf(' %d / %s\n', a, A);
Verfasst am: 19.11.2016, 14:22
Titel: Re: Gui - Pushbutton - Ergebnisse in Static text ausgeben
Hallo T_0,
Es ist zwar kein Error, aber führt oft zu unerwartetem Verhalten, wenn man den Namen eines wichtigen Matlab-Befehls als Variable verwendet. Darum ist es grundsätzlich besser, das nicht zu tun. Hier "text".
Code:
function pushbutton1_Callback(hObject, eventdata, handles)
A = get(handles.popupmenu1,'Value'); %Rechenbefehl aus Popupmenü
%1:Multiplikation
%2: Division
switch A % Hübscher als IF, oder "Aswhl2"?! case1
M = a*M
Msg = [Msg, sprintf(' %s * %d\n', A, a)]; % [EDITED, trailing "]"] added case2
M = a/M
Msg = [Msg, sprintf(' %d / %s\n', a, A)];
otherwise error('Programming error'); % No SWITCH without OTHERWISE end set(handles.text1, 'String', Msg) end
Du vermeidest also das Überschreiben des Textes, indem Du ihn nicht überschreibst, sondern anhängst. Eigentlich logisch, oder? :-)
Ich habe statt der IFs ein SWITCH verwendet, da es beser zu einer Auswahl-Liste passt. Bei Dir stand einmal "A" und einmal das kryptische "Aswhl2". Ich nehme mal an, das soll das gleiche sein.
Gruß, Jan
Zuletzt bearbeitet von Jan S am 20.11.2016, 22:06, insgesamt einmal bearbeitet
nach dem zweiten mal ausführen des pushbuttons gibt matlab
"Error using horzcat
Dimensions of matrices being concatenated are not consistent."
aus. wie kann ich das beheben?
danke im voraus
Dann lasse den Code nochmal laufen. Wenn Matlab in der Zeile mit dem Fehler stoppt, betrachte die verwendeten Variablen im Command-Window und versuche die Zeile zu reparieren. Vielleicht ein [x;y] statt [x,y]?
Diese Zeile enthält einen Tippfehler: Ich hatte die abschließende eckige Klammer vergessen. Natürlich muss Matlab da stoppen, aber wegen inkorrekter Syntax. Das passt also überhaupt nicht zu der Fehlermeldung "Dimensions of matrices being concatenated are not consistent." Bitte poste immer den tatsächlich verwendeten Code.
Zitat:
Und es ist [0,1,2,3,4,5,6,7,8,9]
Bitte denke beim Schreiben daran, dass die Leser nich die geringsten Ahnung von dem haben,was Du machst. Lies Dir also Deine Nachricht noch mal durch und überlege bei jedem Satz, ob er nachvollziehbar sein könnte.
Zitat:
Ich habe es auch mit Cellarray probiert, aber unverändert leider.
Auch das ist eine Aussage, der man als Leser nicht folgen kann. Poste den Code, damit man sehen kann, was Du versucht hast.
Wenn Du per
dbstop
in der fehlerhaften Zeile stoppst, betrachte die Inhalte der verwendeten Variablen. Du kannst diese Details dann auch hier posten. Zzur Zeit versuchen wir Dir mehr oder weniger im Blindflug zu helfen und zu erraten, was Du eigentlich machst, aber das ist sehr ineffizient.
Gruß, Jan
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
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.