WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Gui - Pushbutton - Ergebnisse in Static text ausgeben

 

T_0
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 03.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2016, 11:53     Titel: Gui - Pushbutton - Ergebnisse in Static text ausgeben
  Antworten mit Zitat      
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:
Code:
set(handles.text1,'String',D)

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);

       end
set(handles.text1,'String',[text])

 


kann mir wer sagen, wie ich es schaffe das der text nicht überschrieben, sondern nach jedem betätigen des pushbuttons ergänzt wird?

vielen dank im vorraus
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.11.2016, 14:22     Titel: Re: Gui - Pushbutton - Ergebnisse in Static text ausgeben
  Antworten mit Zitat      
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

Msg = get(handles.text1, 'String');

switch A   % Hübscher als IF, oder "Aswhl2"?!
  case 1
     M = a*M  
     Msg = [Msg, sprintf(' %s * %d\n', A, a)];  % [EDITED, trailing "]"] added
case 2
     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
Private Nachricht senden Benutzer-Profile anzeigen
 
T_0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 03.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2016, 15:33     Titel:
  Antworten mit Zitat      
super danke dir !
Private Nachricht senden Benutzer-Profile anzeigen
 
T_0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 03.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2016, 16:20     Titel:
  Antworten mit Zitat      
eine weitere frage habe ich doch noch:

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 19.11.2016, 23:52     Titel:
  Antworten mit Zitat      
Hallo T_0,

Bevo ich jetzt wild rate, welche Zeile den Fehler produziert, poste doch einfach die vollständige Meldung, die diese Zeile ja erwähnen sollte.

Ansonsten kannst Du das aber wahrscheinlich auch selbst herausfinden. Benutze den Debugger:
Code:

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]?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
T_0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 03.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2016, 19:38     Titel:
  Antworten mit Zitat      
Hallo jan,
die fehlerausgabe lautet
Code:
Error using horzcat
Dimensions of matrices being concatenated are not consistent.

Error in Aufgabe>pushbutton1_Callback (line 107)
              Msg = [Msg, sprintf(' %s * %d\n', A, a);


Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)Aufgabe('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback

 


Und es ist [0,1,2,3,4,5,6,7,8,9]

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2016, 20:10     Titel:
  Antworten mit Zitat      
Hallo,

nutze doch Jans Vorschlag
Code:

Dann siehst du ja, wo das Problem liegt, und kannst es wahrscheinlich sogar selber beheben.

Zitat:
Und es ist [0,1,2,3,4,5,6,7,8,9]

Wer oder was ist "es"?!

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
T_0
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 03.10.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.11.2016, 21:07     Titel:
  Antworten mit Zitat      
Hallo,
das Problem ist weiterhin in
Msg = [Msg, sprintf(' %s * %d\n', A, a);

aber ich weiß nicht wie ich das beheben kann.

Ich habe es auch mit Cellarray probiert, aber unverändert leider.

Die Matrix M ist so aufgebaut :[1,2,3,4,5,6,7].

Mit
Code:

weißt er auch auf diese Zeile hin.

vielen dank.
lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.432
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.11.2016, 21:49     Titel:
  Antworten mit Zitat      
Hallo,

und welchen Inhalt haben die beteiligten Variablen M, A und a in dieser Zeile?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 20.11.2016, 22:03     Titel:
  Antworten mit Zitat      
Hallo T_0,

Das ist eine sehr seltsame Fehlermeldung!
Code:
Msg = [Msg, sprintf(' %s * %d\n', A, a);

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.