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

Parameter-Files einlesen

 

gkaraden

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2012, 11:13     Titel: Datein über GUI in Listbox laden
  Antworten mit Zitat      
Hi Leute,

stehe mittlerweile echt mit dem Rücken zur Wand.Bin ein Matlab-Neuling und fast am verzweifeln.

Ich möchte über meine GUI ein paar M-Files mit den Bestandteilen *vehicle* aus meinem path einlesen und in meiner GUI-Listbox darstellen. Danach soll der User diese anwählen können, um die hinterlegten Parameter entsprechend einzuladen.

Ich bin mit meinem Latein am Ende Sad und würde mich über EURE Hilfe unglaublich freuen.

Vielen Dank im voraus.

Gruß
gkaraden
Gesplittet: 04.09.2012, 11:29 Uhr von denny
Von Beitrag Einlesen aller Dateien aus einem Ordner aus dem Forum Programmierung


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.09.2012, 12:39     Titel: Re: Datein über GUI in Listbox laden
  Antworten mit Zitat      
Hallo gkaraden,

Dann poste doch mal den Code, mit dem du dies versuchst und erkläre die auftrendenden Probleme.
Ohne irgendetwas in der Hand zu haben, ist ein Ratschlag kaum möglich.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
gkaraden

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2012, 08:48     Titel:
  Antworten mit Zitat      
Hi Jan,

also hab mein Modell soweit mal abgespeckt, damit man direkt mein akutes Problem sehen kann.

Ich lese über einen pushbutton m-files in meine Listbox ein:

Code:
vehicles=dir('road*.m');
names={vehicles.name};
set(handles.listbox1,'String',names);

Nun möchte ich das die ausgewählten mfiles auch ausgeführt werden...

Hab das ganze mal über den switch Befehl mal ausprobiert...läuft aber nicht, zumindest weiß ich auch nicht recht wie ich das ganze einpflegen soll!!

Danke dir für deine Unterstützung...Code ist angehängt

listtest.m
 Beschreibung:

Download
 Dateiname:  listtest.m
 Dateigröße:  4.2 KB
 Heruntergeladen:  315 mal
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2012, 09:21     Titel:
  Antworten mit Zitat      
Hi,

hab grad gemerkt das ich bei der Beschreibung *vehicle* beschriben habe, könnte natürlich auch *road* sein, wie ich in dem Beispiel drin habe.

Sorry Künstlerpech.

Gruß

gkaraden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.09.2012, 10:29     Titel:
  Antworten mit Zitat      
Hallo,

Statt des SWITCH Blocks ginge dies:
Code:
Value = get(hObject, 'Value');
String = get(hObject, 'String');
feval(String{Value});

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
gkaraden

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2012, 12:53     Titel:
  Antworten mit Zitat      
Hi Jan,

nun hab ich das Problem das er mein M-File nicht erkennt.

Weißt du wie ich diese kenntlich machen kann?

Fehlercode:

Code:

??? Error using ==> feval
Undefined function or variable 'road.m'.

Error in ==> listtest>pushbutton1_Callback at 104
feval(String{Value});

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> listtest at 42
    gui_mainfcn(gui_State, varargin{:});

??? Error while evaluating uicontrol Callback


Mein weiterer Gedanke war das ich prinzipiell ja nur dieses File über die Listbox ausführen lassen will. Dafür brauche ich ja nur den Filetitel anzuhängen, weshalb mein Code folgendermaßen aussieht

Code:
Value = get(handles.listbox1, 'Value');
String = get(handles.listbox1, 'String');
String{Value};


klappt aber auch nicht!!! Crying or Very sad

Gruß

gkaraden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.09.2012, 16:13     Titel:
  Antworten mit Zitat      
Hallo gkaraden,

FEVAL benötigt den Namen der Funktion, aber nicht die File-Extension. Also:
Code:
Name = strtok(String{Value}, '.');
feval(Name);


Code:
String{Value};

Nein, das klappt nicht. Denn "String{Value}" ist ein String, also ein CHAR-Vektor, der während der Laufzeit definiert wird. Das ist etwas ganz anders als der Aufruf einer Funktion. Ein FEVAL ist schon nötig.

Übrigens wäre es sicherer, Function handles zu benutzen. Aber FEVAL ist schonmal deutlich sicherer als EVAL, z.B. falls Dir jemand eine Datei mit folgendem Namen unterschieb:
"road.m=1; system('format C:'); road.m"
Dann würde EVAL Deinem Rechner ganz schön auf die Mütze hauen -- nein, natürlich würde er das nur unter Windows 98 bevor es Admin-Rechte gab. Ich poste doch hier keinen gefährlichen Code! ;-)

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
gkaraden

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2012, 17:23     Titel:
  Antworten mit Zitat      
Hi Jan,

hänge leider nun am nächsten Schritt.

Code:

Warning: feval on script names will not work, or may work differently,
 in a future version of MATLAB.  To make your code insensitive to any change
 and to suppress this warning message:
 - Either change the script to a function.
 - Or use eval instead of feval.
 The script file in question is road.
> In listtest>pushbutton1_Callback at 105
  In gui_mainfcn at 96
  In listtest at 42
 


Hast du eine Idee??

Gruß
gkaraden
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 06.09.2012, 10:21     Titel:
  Antworten mit Zitat      
Hallo gkaraden,

Nun, die Fehlermeldung enthält ja bereits Lösungsvorschläge. Da ich von EVAL bereits abgeraten habe, wäre die Umwandlung in eine Funktion naheliegend. Oder Du rufst das Script per RUN()-Befehl auf (siehe "help run").

Ist "road" wirklich ein passender Name?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
gkaraden

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.09.2012, 13:19     Titel:
  Antworten mit Zitat      
Hi Jan,

habe das ganze nun so gelöst:

Ich wandle meinen Input in einen string und schreibe diesen über load(x) heraus. Bekomme zwar dann ein struct-Ausdruck mit dem ich aber arbeiten kann.

Das Problem mit den Functions ist das der User in dem Prozess wie gewohnt die Daten über .m- oder .mat-files einlesen sollte, da diese an anderen Stellen benötigt werden können.

Warst mir 'ne riesen Hilfe...

Vielen Dank Jan.

Gruß
gkaraden
 
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.