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

Text aus Editfeld ausgeben

 

123456
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 09:29     Titel: Text aus Editfeld ausgeben
  Antworten mit Zitat      
Guten Tag,

auf meiner GUI befinden siche in Pop-Menü und zwei Editfelder. Wählt der User aus dem Pop einen Variabele aus erscheint diese im Editfeld 1 und über das Editfeld 2 kann dann der Variabelen eine Zahl zugeordnet werden.

Nun habe ich das Problem das ich keine Buchstaben auslesen kann. Ich will hinter z.B. t1=100 haben, aber für Editfeld 1 (t1) kommt dann NaN.
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 09:45     Titel:
  Antworten mit Zitat      
Hallo

weil du wahrscheinlich STR2DOUBLE verwendest, wenn du einen Wert einer Variablen zu weisen willst muss du EVAL verwenden
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 10:07     Titel:
  Antworten mit Zitat      
Ja du hast recht, hatte erst versucht mit num2str zu arbeiten, klappt aber nur mit eval.

Gibt es denn auch eine Möglichkeit zwei ausgelesene Felder einer Variablenen zu zuordnen?
Code:

function e2_Callback(hObject, eventdata, handles)
% hObject    handle to e2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of e2 as text
%        str2double(get(hObject,'String')) returns contents of e2 as a double
zeit = get(handles.e2,'String');
zeit = str2double(zeit)

Variable1 = get(handles.e1,'string');
Variable1 = eval('a')
Variable1= evalc('Variable1=zeit')


So gibt MATLAB Variable1=Variable1=10 (bei zeit=10 und Variable1=a) aus.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 10:23     Titel:
  Antworten mit Zitat      
Moment verstehe nicht ganz, was du meinst?

Wolltest nicht denn a=10 haben, wo a Variable ist, welcher der Wert 10 zugewiesen wird?

Was meinst mit 2 Feldern? a=[2 5]??
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 10:31     Titel:
  Antworten mit Zitat      
Nein eigentlich nicht.

Der User sucht im Pop-Up eine Variabele aus, z.B. a.

Die ausgesuchte Variabele erscheint im editfeld 1 und im Editfeld 2 soll man dann eine Zahl eingeben die der Variabelen zugeordnet wird.

Wenn ich jetzt mit eval die Variabele aus Editfeld 1 auslese habe ich:


Variable1=a

Zeit=10

und dann Variable1=Variable1=10. Aber eigentlich müsste da ja dann stehen
Variable1=a=10 bzw. a=10.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 10:42     Titel:
  Antworten mit Zitat      
Dann benutze doch SPRINTF oder [] um STRINGS zusammenzusetsen

oder meinst doch was anderes?
Code:

function e2_Callback(hObject, eventdata, handles)
% hObject    handle to e2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of e2 as text
%        str2double(get(hObject,'String')) returns contents of e2 as a double
zeit = get(handles.e2,'String');
zeit = str2double(zeit)

Variable1 = get(handles.e1,'string');

Variable1= sprintf('%s=%d', Variable1 ,zeit)

 
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.06.2010, 10:51     Titel:
  Antworten mit Zitat      
Damit bekomme ich es nicht hin, aber trotzdem vielen Dank für die Mühe.

Eigentlich sollen nur zwei Editfelder ausgelesen werden und gleichgesetzt werden.

Editfeld 1= a

Editfeld 2= 10

Matlabausgabe soll dann sein a=10, so ist es vielleicht am einfachsten zu verstehen.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.06.2010, 12:04     Titel:
  Antworten mit Zitat      
Wo soll es denn ausgegeben werden?
Und was klappt nicht?
Code:

function e2_Callback(hObject, eventdata, handles)
% hObject    handle to e2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of e2 as text
%        str2double(get(hObject,'String')) returns contents of e2 as a double
Value = get(handles.e2,'String');
Value = str2double(Value )

Variable = get(handles.e1,'String');

Expression= sprintf('%s=%d', Variable ,Value)
fprintf('%s\n',Expression)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 07:59     Titel:
  Antworten mit Zitat      
Vom Prinzip her klappt es so, aber es wird nicht die ausgewählte Variabele des Pop-up gleich gesetzt sondern einfach nur Value=Eingabewert.


Code:
function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu1
contents = get(hObject,'String');
index = get(hObject,'Value');

set (handles.e2,'String', index);
set (handles.e1,'String', contents(index,:));
function e2_Callback(hObject, eventdata, handles)
% hObject    handle to e2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of e2 as text
%        str2double(get(hObject,'String')) returns contents of e2 as a double
Value = get(handles.e2,'String');
Value = str2double(Value)

Variable = get(handles.e1,'String');

Expression= sprintf('%s=%d', Variable ,Value)
fprintf('%s\n',Expression)
 


Eigentlich sollte aber im Pop-up z.B. t1 ausgewählt werden, das erscheint dann in Editfeld e1 und im Editfeld e2 lässt sich dann der Variabelen t1 einen Wert von z.B. 100 zuordnen. Die ausgabe soll dann sein im Commandwindow t1=100. Das will aber leider nicht funzen...
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.06.2010, 10:56     Titel:
  Antworten mit Zitat      
Hallo,

Tja das ist komisch, ich verstehe das nicht warum es nicht klappen will, kannst du vielleicht deine Files anhängen?


setze doch Breakpoint in Popupmenu1_Callback und e2_Callback und schaue was dort übergeben/gesetzt wird?

verbessere noch in Popup folgende Fehler
Code:

function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu1
contents = get(hObject,'String');
index = get(hObject,'Value');

% hier in STRING konvertieren
set (handles.e2,'String', sprintf('%d',index));

% Inhalt aus cell übergeben
set (handles.e1,'String', contents{index});

function e2_Callback(hObject, eventdata, handles)
% hObject    handle to e2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of e2 as text
%        str2double(get(hObject,'String')) returns contents of e2 as a double
Value = get(handles.e2,'String');
Value = str2double(Value)

Variable = get(handles.e1,'String');

Expression= sprintf('%s=%d', Variable ,Value)
fprintf('%s\n',Expression)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2010, 11:12     Titel:
  Antworten mit Zitat      
Jetzt funktioniert es.

Gibt es in der Verbindung dazu eigentlich keine Möglichkeit die Werte die jetzt den Variabelen zugeordnet sind bzw. die Variabelen mit Value im Workspace zu hinterlegen.

Wenn ich eine normale M-file berechnung durchführe ist es mir möglich die vorhanden Variabelen über das Commandwindow aufzurufen. Arbeite ich aber mit den function der GUI werden die Werte einmal angezeigt und danach gehen diese direkt wieder verloren.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.06.2010, 11:47     Titel:
  Antworten mit Zitat      
Hallo

dazu EVALIN statt FPRINTF nutzen, so :

Code:

function popupmenu1_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu1 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu1
contents = get(hObject,'String');
index = get(hObject,'Value');

% hier in STRING konvertieren
set (handles.e2,'String', sprintf('%d',index));

% Inhalt aus cell übergeben
set (handles.e1,'String', contents{index});

function e2_Callback(hObject, eventdata, handles)
% hObject    handle to e2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of e2 as text
%        str2double(get(hObject,'String')) returns contents of e2 as a double
Value = get(handles.e2,'String');
Value = str2double(Value)

Variable = get(handles.e1,'String');

Expression= sprintf('%s=%d', Variable ,Value)

evalin('base',Expression)
fprintf('%s\n',Expression)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.06.2010, 07:43     Titel:
  Antworten mit Zitat      
Ich danke dir Denny, super Hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 10:54     Titel:
  Antworten mit Zitat      
Hab da noch mal ne kurze Frage.

Wenn ich evalin benutze unzwar in dieser Form:
Code:

function emani_i_Callback(hObject, eventdata, handles)
% hObject    handle to emani_i (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of emani_i as text
%        str2double(get(hObject,'String')) returns contents of emani_i as a double
emani_i= get(handles.emani_i,'String');
emani_i= str2double(emani_i);

evalin('base',emani_i);
 


warum bekomme ich dann eine Fehlermeldung? Kann ich eine Variabele nicht einfach mit evalin dem WS zuführen? Muss diese immer mit sprintf gebildet sein?
Private Nachricht senden Benutzer-Profile anzeigen
 
123456
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 30.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.06.2010, 11:08     Titel:
  Antworten mit Zitat      
Mit num2str geht es, aber evalin verliert die Variable bei der Übergabe!

Habe dann nur noch ans=.... und nicht emani_i=.....

Confused
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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 - 2025 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.