Mit Zahlen aus Textbox rechnen und wieder in andere TextBox
Huuut
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2011, 10:48
Titel: Mit Zahlen aus Textbox rechnen und wieder in andere TextBox
Hallo,
ich habe folgendes Problem.
Ich lese aus Text- und PopUpBoxen Zahlen aus und berechne damit einen Wert. Jetzt zeigt er mir aber eine Fehlermeldung. Wieso?
Hier mein Code:
Code:
function weiter_Callback(hObject, eventdata, handles) % hObject handle to weiter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Spulenkoerperbreite = get(handles.Hoehe_Wickelraum,'String');
MittlererDraht = get(handles.Drahtdurchmesser_PopUp, 'String');
Skb = str2double(Spulenkoerperbreite);
Drahtdurchmesser = str2double(MittlererDraht);
bei Fehlermeldungen bitte immer angeben, welche Fehlermeldung und in welcher Zeile sie auftritt. Auf den ersten Blick sieht es so aus, dass du die numerischen Werte nicht in Strings umgewandelt hast:
Hallo Harald.
Danke für deine schnelle Antwort.
Ich habe das ganze jetzt so gelöst.
Code:
function weiter_Callback(hObject, eventdata, handles) % hObject handle to weiter (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.Drahtdurchmesser_PopUp, 'Value')
Spulenkoerperbreite = get(handles.Hoehe_Wickelraum,'String')
MittlererDraht = get(handles.Drahtdurchmesser_PopUp, 'String',a)
Skb = str2double(Spulenkoerperbreite);
Drahtdurchmesser = str2double(MittlererDraht);
Ich denke der Fehler liegt darin, dass ich nicht richtig auf die Werte im PopUp-Menü zugreife, bzw. sie vll sogar nicht richtig reinschreibe.
Hier mal der Code zu füllen des PopUp-Menüs:
Code:
function eingabemaske_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to eingabemaske (see VARARGIN)
% Choose default command line output for eingabemaske
handles.output = hObject;
Ich möchte nur die Daten, die in draht(n).nenn stehen im PopUp-Menü haben, allerdings möchte ich mit den anderen der gleichen Zeile (des gleichen "n") weitere berechnungen durchführen.
Außerdem bekomme ich im Moment folgende Fehlermeldung:
die Fehlermeldung sollte selbsterklärend sein. Das ",a" ist zuviel.
Deine andere Frage verstehe ich leider nicht.
Grüße,
Harald
Huuut
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2011, 13:09
Titel:
Hallo Harald,
ohne "a" hab ich es auch schon versucht. Mein Problem ist, wenn ich mir MittlererDraht ausgeben lasse, dass alle Werte ausgegeben werden, nicht nur der, der im PopUp-Menü ausgewählt wurde.
Und ich benötige ja nur einen Wert um mit diesem weiterzurechen.
Zu meiner 2. Frage:
Angenommen ich wähle im PopUp-Menü den 1. von 99 Werten aus. Um weitere Berechnungen durchzuführen benötige ich vom struct draht.nenn und draht.mittlererDurchm den 1. Wert. Der im PopUp-Menü ausgewählte Wert ist in diesem Fall schon draht.nenn.
Wie könnte ich das machen.
Tut mir leid, dass ich solche vermutlich banalen Fragen stelle, aber ich habe noch nicht viel mit Matlab gearbeitet.
du kannst entweder nachträglich indizieren oder die Hilfestellung benutzen, die im Callback eines Popupmenu angeboten wird:
Zitat:
% Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from popupmenu1
Was die andere Frage angeht, bin ich immer noch nicht schlauer. Vielleicht kannst du das an einem einfacheren Beispiel erklären.
Zur letzten Frage: Die Ausgabe stimmt so. Das struct ist 1x99, und jede Komponente enthält 4 Felder. Das kannst du dir auch im Workspace Browser schön anschauen.
Grüße,
Harald
Huuut
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 19.10.2011, 07:19
Titel:
Hallo Harald,
das ganze in einem kleinen Beispiel:
Diese Werte sollen die Felder enthalten:
draht(1).nenn = 1
draht(2).nenn = 5
draht(1).minZunahme = 2
draht(2).minZunahme = 6
draht(1).maxDurchm = 3
draht(2).maxDurchm = 7
Ich will mit meinen PopUp draht(1).nenn auswählen, was auch inzwischen super funktioniert.
Allerdings möchte ich dann auch auf draht(1).minZunahme und auf draht(1).maxDurchm zugreifen - also immer das erste Element des structs draht.
Ich habe das jetzt so lösen wollen:
Code:
function weiter_Callback(hObject, eventdata, handles) % hObject handle to weiter (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
Spulenkoerperbreite = get(handles.Hoehe_Wickelraum,'String')
BlankerDraht = get(handles.Drahtdurchmesser_PopUp,'String')
idx = get(handles.Drahtdurchmesser_PopUp,'Value')
selected_draht = BlankerDraht(idx)
MaxDraht = get(handles.draht(idx).maxDurchm)
ZunahmeDraht = get(handles.draht(idx).MinZunahme)
idx ist bei mir der Index des Wertes, der im PopUp-Menü ausgewählt wurde.
Bis selected_draht wird alles super ausgegeben. Danach nicht mehr.
Ich hoffe, es ist jetzt alles verständlich.
Die Fehlermeldung ist doch relativ einfach zu interpretieren, Übersetzung: Das Feld "draht" existiert nicht (in der handles-struct). Benutze hierzu bitte den Debugger und schaue, wieso das Feld nicht vorhanden ist. Siehe hierzu auch "doc guidata".
Ich möchte jedoch darauf hinweisen, dass es nicht unbedingt empfohlen ist, die handles-Struktur mit eigenen Daten "zuzumüllen".
Stattdessen sollte man lieber mit SETAPPDATA / GETAPPDATA arbeiten.
Grüße,
Harald
Huuut
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 19.10.2011, 07:51
Titel:
Wie schon gesagt, bin ich absoluter Anfänger.
Die Fehlermeldung verstehe ich auch, aber wie mache ich das, dass das struct draht existiert?
Was habe ich hier falsch gemacht, bzw, was fehlt?
Code:
function eingabemaske_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to eingabemaske (see VARARGIN)
% UIWAIT makes eingabemaske wait for user response (see UIRESUME) % uiwait(handles.figure1);
Siehe auch in der Hilfe (wie ich vorhin angemerkt hatte)...
Dann werden die Fehler aber immer noch nicht erledigt sein, weil du nur leere Cell-Einträge hast. Vielleicht merkst aber auch selbst, dass es ohne ein grundlegendes MATLAB-Verständnis nicht geht. Ich würde daher auch dir nahe legen, sich in die Einsteigertutorials, zumindest in die GUI-Tutorials einzuarbeiten.
Vermutlich sollte ich wirklich erst einmal Tutorials durcharbeiten.
Trotzdem vielen, vielen Dank für eure rasche Hilfe!
Gruß,
Huuut
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.