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

Variablenübergabe / Ausführen m-file

 

R0b1
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 11.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 13:41     Titel: Variablenübergabe / Ausführen m-file
  Antworten mit Zitat      
Hallo!

Ich habe folgendes Problem: Über einen Button wähle ich eine Datei aus, die geladen werden soll. Mit dem nächsten Button möchte ich die Datei starten.

1. Wenn ich jedoch aus der ersten Funktion rausgehe, verliere ich natürlich den Inhalt von "filename_skript". Wie kann ich die Variable übergeben?
2. Das Ausführen der Datei funktioniert ebenfalls nicht, weil Matlab versucht eine Datei Namens "filename_skript" auszuführen, wobei ich doch eigentlich will, dass sie den Inhalt öffnet.

Code:

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

[filename_skript pathname_skript] = uigetfile('..\Kennfeld_ber\*.m', 'Select a MATLAB m-file');     % Berechnungsskript auswählen

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

filename_skript;   % Ausführen der Datei
 


Habt ihr da Ideen für mich?
Private Nachricht senden Benutzer-Profile anzeigen


Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 28.02.2013, 14:13     Titel:
  Antworten mit Zitat      
Hey,

am besten in den handle reinschreiben und dann updaten.

Code:
handles.filename_skript = filename_skript;
guidata(hObject, handles);


In der anderen Funktion dann mittles:

Code:
handles.filename_skript


wieder aufrufen.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
R0b1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 11.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.02.2013, 15:29     Titel:
  Antworten mit Zitat      
Super, das funktioniert schonmal! Allerdings kann ich mir nicht genau erklären wie... Wenn ich das richtig verstanden habe, dann ist der handle sowas wie ein Zeiger. Woher weiß das System denn aber auf welches handle gezeigt wird, wenn ich die zweite Funktion aufrufe? Das könnte ja auch der handle von einer anderen Funktion sein. Oder ist es weil ich handle.filename_skript schreibe und es somit nach dem handle mit diesem namen sucht?

Noch zur zweiten Frage: In "filename_skript" steht noch der Dateiname drin, von der Datei, die gestartet werden soll. Wie bekomm ich das hin, dass sie gestartet wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
R0b1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 11.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2013, 09:02     Titel:
  Antworten mit Zitat      
Skript heißt "Berechnung.m"

Folgendes klappt leider nicht:
Code:

filename_skript='Berechnung.m'; % Zuweisung

filename_skript; % klappt nicht, Programm denkt wahrscheinlich, dass das Skript "filename_skript" heißt

run filename_skript; % klappt leider genauso wenig

run (get(handles.text_Dateiname_Berechnungsskript, 'String')); % Dateiname steht in einem Textfeld der GUI, Auslesen funktioniert, Ausführen des Skriptes jedoch nicht
 


Hat jemand noch Vorschläge? Sad
Private Nachricht senden Benutzer-Profile anzeigen
 
Goofy9020
Forum-Century

Forum-Century


Beiträge: 164
Anmeldedatum: 10.08.11
Wohnort: ---
Version: 2009a, 2010b
     Beitrag Verfasst am: 01.03.2013, 09:46     Titel:
  Antworten mit Zitat      
Der handle bezieht sich auf deine komplette GUI und in diesen handle kannst du dann Variablen reinspeichern die du in den anderen Funktionen wieder verwenden kannst.
Wenn du eine andere Funktion aufrufen willst sieht dies in etwas so aus:

Code:
[AusgabeParameter] = DeineFunktion(EingabeParameter);


In deinem Falls in etwa:

Code:
Berechnung();


also ohne dem ".m"

Eine weitere Funktion die dir beim ausführen hilft ist dann:

Code:


Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
R0b1
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 11.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2013, 09:56     Titel:
  Antworten mit Zitat      
Habe es jetzt folgendermaßen gelöst und bin eigentlich auch zufrieden mit der Lösung:

Code:
filename        = (get(handles.text_Dateiname, 'String'));    % Einlesen des Dateinamen aus GUI-Feld
filename_ohne_m = filename (1, 1:(end-2));  % .m aus Dateinamen entfernen
run (filename_ohne_m);
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.