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

Eingetippten Zahlenwert in Code nutzen

 

Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2009, 14:11     Titel: Eingetippten Zahlenwert in Code nutzen
  Antworten mit Zitat      
Hallo zusammen,
leider habe ich im Forum soweit keine Hilfe gefunden, daher hier mein Problem:

Ich habe einen GUI geschrieben in der ich zwei zahlenwerte eingeben kann. Ich möchte nun diese beiden Zahlen zur weiteren Berechnung in einem Skript nutzen. Also in einem Skript zuerst das GUI aufrufen, dann OK drücken und dann mit den daraus erhaltenen Werten weiterrechnen. Leider schaffe ich es nicht eine entsprechende Matrix zu erzeugen, auf die ich dannim Code zurückgreifen kann. Hier die Kurzform meines GUI-pushbutton1_Callback-Codes:
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)
first = get(handles.a,'String');
last = get(handles.b,'String');
setappdata(gcf, 'F', num2str(first));
setappdata(gcf, 'L', num2str(last));
eins = getappdata(gcf, 'F')
zwei = getappdata(gcf, 'L')
guidata(hObject, handles);
close
 



Ich erhalte im Command Window die Werte eins und zwei, aber kann damit nicht weiterarbeiten, weil sie nicht im Workspace gespeichert werden.

Gruß
Kathy


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 24.06.2009, 14:44     Titel:
  Antworten mit Zitat      
Hi Kathy,

das liegt daran, das die Variablen im Workspace deiner Funktion liegen und auch (bis auf weiteres) nur dort verfügbar sind. Eine Möglichkeit wäre mit ASSIGNIN zu arbeiten, was ich aber in diesem Fall nicht empfehle.

Schau mal ob ganz oben in deinem m-file für das GUI
Code:
steht. Wenn nicht, dann ergänze es.

In deiner Callback kannst du dann schreiben:
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)
first = get(handles.a,'String');
last = get(handles.b,'String');
setappdata(gcf, 'F', num2str(first));
setappdata(gcf, 'L', num2str(last));
eins = getappdata(gcf, 'F')
zwei = getappdata(gcf, 'L')
varargout{1} = eins;
varargout{2} = zwei;
guidata(hObject, handles);
close

In deinem Skript musst du dann als Aufruf folgendes schreiben:
Code:
[ersterWert, zweiterWert] = DeinGuiName; % damit bekommst du beide Werte zurück
% erstererWert = DeinGuiName; % damit bekommst du NUR den ersten Wert zurück


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2009, 15:10     Titel:
  Antworten mit Zitat      
dank Dir erstmal:-)
ansich klappt es nämlich soweit, allerdings gibt er mir nicht die eingegebene Zahl wieder sondern irgendwas um die 400 wieder. Hab ich da irgendwo noch nen Konvertierungsfehler drin?
Gruß
Kathy
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 24.06.2009, 15:32     Titel:
  Antworten mit Zitat      
Ich sehe grad, du liest einen String ein und versuchst diesen mit num2str in einen String umzuwandeln. Das geht schief denke ich...
Code:

Das sollte helfen.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2009, 15:41     Titel:
  Antworten mit Zitat      
Mmh, will er auch nicht. Kommt immernoch auf seine 400:-(
Noch ne Idee? Wink
Code im GUI
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)
first = get(handles.a,'String');
last = get(handles.b,'String');
setappdata(gcf, 'F', str2double(first));
setappdata(gcf, 'L', str2double(last));  
eins = getappdata(gcf, 'F')
zwei = getappdata(gcf, 'L')
varargout{1} = eins;
varargout{2} = zwei;
guidata(hObject, handles);
close
 


Zugriffs-Code im Skript
Code:

eins = GUI
zwei = GUI
 
 
Kathy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.06.2009, 16:07     Titel:
  Antworten mit Zitat      
So, vielleicht etwas unelegant, aber es funktioniert soweit:
Speichere jetzt im GUI zwei files ab
Code:


und lade sie im skript dann wieder
Code:
 
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.