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

Pfad in Textfeld anzeigen bzw. editieren und Werte übergebe

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2012, 15:10     Titel: Pfad in Textfeld anzeigen bzw. editieren und Werte übergebe
  Antworten mit Zitat      
Hallo,

ich bin ein absoluter Neuling in Sachen Matlab bzw. Guis und arbeite mich deshalb nur langsam vor. So bräuchte ich jetzt mal dringend eure hilfe:

Ich möchte über eine Gui eine .csv Datei laden, deren Pfad in einem Feld anzeigen lassen (wäre gut, sofern er hier auch noch editiert werden könnte).
Außerdem habe ich noch 3 Felder in den ich Zahlenwerte übergeben möchte.
Zum Abschluss soll es dann noch einen Button geben, der das dahinterliegende Skript startet.

Bisher war das ganze über hintereinander geschaltete inputdlg gelöst, aber über eine gui sollte das ja schöner gehen.

Die Datei lade ich über folgenden Befehl:

[filename,pathname]=uigetfile('C:\*.csv','Please choose your data');
if name==0 return, end
path=fullfile(pathname, filename);

Aber wie bekomme ich es nun hin, dass die Datei (ihr Pfad) in dem Textfeld angezeigt wird. Denn eigentlich muss ich diesem doch nur das "path" übergeben?

Auch bei den Übergeben der Zahlenwerte bin ich ratlos. Zuvor war das mit:
wl_min = str2double()
gelöst.

Ich bin über jede Hilfe sehr dankbar!

Johannes


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.02.2012, 15:42     Titel:
  Antworten mit Zitat      
Code:
set(handles.text1,'String',pathname)

irgendwie so ging das.
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2012, 16:15     Titel:
  Antworten mit Zitat      
Hallo Winkow,

danke für deine Rückmeldung. Genauso habe ich das auch schon einmal probiert, jedoch ohne Erfolg. Wo soll denn diese Anweisung stehen? In der Callback oder CreateFcn. Davon abgesehen funktioniert es in dieser Form in beiden Fällen nicht.

Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.02.2012, 16:26     Titel:
  Antworten mit Zitat      
habs grade mal ausprobiert und bei mir funktionierts

Code:
% --- Executes on button press in pushbutton1.
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)
[filename,pathname]=uigetfile('C:\*.csv','Please choose your data');
path=fullfile(pathname, filename);
set(handles.edit1,'String',path)
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2012, 16:30     Titel:
  Antworten mit Zitat      
Tausend Dank!! Bei mir stand der Befehl unter function edit1 (und nicht unter pushbutton1), dann kann das natürlich auch nicht funktionieren. ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 28.02.2012, 16:36     Titel:
  Antworten mit Zitat      
hmm du kannst das auch dahin packen.
Code:
function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (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 edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double
[filename,pathname]=uigetfile('C:\*.csv','Please choose your data');
path=fullfile(pathname, filename);
set(handles.edit1,'String',path)

musst dann aber einmal reinclicken und wieder raus damit es ausgeführt wird.. das is nich so toll
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.02.2012, 08:31     Titel:
  Antworten mit Zitat      
Danke für die Hilfe! Soweit so gut, aber wie ist nun das weitere vorgehen? Mein Pfad wird ausgewählt und in das Textfeld geschrieben.
Jetzt habe ich drei weitere Textfelder in welchen Zahlen stehen sollen, die die Barrieren der weiteren Auswertung angeben.
So lese ich beispielsweise die Messanzahl mit folgendem Code aus:

Code:

function nummeas_Callback(hObject, eventdata, handles)
samples = str2double(get(hObject,'String'));
if isnan(samples)
    errordlg('You must enter a numeric value','Bad Input','modal')
else
    handles.samples = samples;
end
guidata(hObject,handles);


Ist das in dieser Form korrekt? Wie schaffe ich es nun, dass bei Drücken eines Knopfes diese und alle anderen Variablen (die 3 Zahlenfelder + path) geschrieben werden, sodass eine weitere .m-Datei im Folder diese Werte erhält und gestartet wird?

In der entsprechenden Datei würde ich mit
Code:

darauf zugreifen und dann weiterverarbeiten.

Vielen Dank!
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2012, 10:10     Titel:
  Antworten mit Zitat      
Keiner einen Tipp für mich, wie ich da am besten vorgehe?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 01.03.2012, 10:26     Titel:
  Antworten mit Zitat      
versteh ich nicht. einfach als funktions parameter übergeben.
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2012, 10:46     Titel:
  Antworten mit Zitat      
Und wie bewerkstellige ich das?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 01.03.2012, 10:56     Titel:
  Antworten mit Zitat      
hmm ich würde es so machen: angenommen dein calback pushbutten ruft dann eine funktionen blabla auf
Code:
x=blabla(str2num(get(handles.text1,'string')),str2num(get(handles.text2,'string')))
blabla muss dann natürlich in diesem fall eine funktion sein die 2 zahlen als eingangsparamter braucht.
funktioniert das bei dir nicht? welche fehlermeldungen treten denn auf
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2012, 12:48     Titel:
  Antworten mit Zitat      
Danke für die Antwort Winkow, aber irgendwie scheint der Sachverhalt doch komplexer zu sein.
Also ich habe in meinem Folder mehrere .m-Dateien. In diesen werden diverse Berechnungen durchgeführt und entsprechende Variablen ausgegeben. In meiner berechnung.m findet dann die eigentliche Berechnung in einer function statt. So "wurden" 4 Parameter (Pfad der zu bearbeitenden Datei und 3 Zahlenwerte) über inputdlg eingelesen und anschließend mit übergebenen Variablen aus den anderen .m verwurstet. Zum Schluss werden noch 3 Graphen gezeichnet.
Nun wollte ich das ganze über eine Gui lösen, da es einfach "schöner" aussieht man es auch gut erweitern kann.

Soweit ich das verstehe, gibt es nun zwei Möglichkeiten:
1. Aus meiner .m-Datei (welche die Gui enthält) die entsprechenden Variablen an die berechnung.m übergeben (durch knopfdruck) und im gleichen Zuge die berechnung.m starten
2. die merechnung.m in meine gui integrieren

Ich denke, dass du mir letzteres Vorschlagen wolltest.
Aber hierbei ist mir nicht klar, wie ich die Variablen korrekt übergebe.
In der berechnung.m lautete die Funktion bisher wie folgt:
function[x1,d,n,zr2,kl1]=berechnung(time);
Wie muss ich das nun ändern, wenn ich die gesamte funktion in den callback meines Buttons integrieren möchte?

Vielen vielen Dank für deine Hilfe und Geduld!

Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 01.03.2012, 13:10     Titel:
  Antworten mit Zitat      
ich hab dir ersteres vorgeschlagen. und der weg ist der selbe wie du auch in jedem anderen mfile eine funktion aufrufst und paramter übergiebst.
wenn deine anderen mfiles natürlich keine funktionen sind sondern nur skripte dann klappt das nicht.

edit: kleines beispiel angefügt

New Folder.zip
 Beschreibung:
kleines beispiel

Download
 Dateiname:  New Folder.zip
 Dateigröße:  4.5 KB
 Heruntergeladen:  366 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
spiele-joe
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 28.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2012, 14:08     Titel:
  Antworten mit Zitat      
Vielen Dank für das Beispiel und deine Mühe. Ich versteh das auch alles, bekomme es dennoch nicht auf meinen Fall angewendet (ich möchte in meiner Gui nichts ausgeben, sondern nur etwas an die function berechnung übergeben und alles Weitere soll dort geschehen). Wahrscheinlich muss ich mich einfach doch noch fleißig weiter einlesen.
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 - 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.