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

m-File aus GUI heraus starten

 

dafocus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2010, 16:34     Titel: m-File aus GUI heraus starten
  Antworten mit Zitat      
Hallo ihr,

ich habe eine funktionierende m-file erstellt. Zur grafischen Aufwertung bin ich gerade dabei, eine Benutzeroberfläche zu erstellen.

Jedoch ist jetzt das Problem, dass die m-File (wird jetzt über einen Push-Button aus der GUI heraus aufgerufen) nicht mehr funktioniert, weil ich nun einfach eine Funktion daraus gemacht habe.

Alle nötigen Variablen sind übergeben. Hinweis: In der m-file wird ein Video erstellt, damit hat Matlab jetzt scheinbar Probleme.

Wenn ich die Funktions-Deklaration wieder raus nehme und die m-file mit selbigen Eingangswerten aufrufe, läuft alles prima.

Zitat:
Die Fehlermeldung:
??? Error using ==> avi
Failed to open file.


Danke für eure Hilfe


Zenon
Forum-Guru

Forum-Guru


Beiträge: 292
Anmeldedatum: 20.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.03.2010, 09:24     Titel:
  Antworten mit Zitat      
Ich fürchte, wir kommen nicht drum herum, dass Du den Funktionscode mal postest (bitte nicht als Dateianhang).
Private Nachricht senden Benutzer-Profile anzeigen
 
dafocus

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.03.2010, 10:57     Titel:
  Antworten mit Zitat      
Das Problem hat sich erledigt...

Lösung: Die aufgerufene m-File hatte ein Problem, weshalb das avi-movie nicht ordnungsgemäß geschlossen wurde. Da diese m-file aber aus einer GUI heraus gestartet wurde, lässt das Video sich nicht so einfach über den Command Window schließen.

Hab die m-file per CW gestartet und dann mit

Code:

wieder geschlossen.
 
Jazzer
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.03.10
Wohnort: HH
Version: 2009b 32bit
     Beitrag Verfasst am: 29.03.2010, 08:59     Titel:
  Antworten mit Zitat      
Moin zusammen,

ich schreib mein Problem mal hier rein, da es zur Überschrifft passt und ich hier noch nicht die passende Antwort finden konnte.

Zu meiner Ausgangssituation:

eine mdl soll während der Simulation aus einer GUI heraus mit Werten gefüttert werden. Die initialisierung erfolgt aus der GUI heraus wobei die GUI selber die Werte aus dem workspace zuvor einliest und dann an die mdl übergibt.

Ich habe eine configutation.m geschrieben in denen die Werte stehen.
Damit diese Werte aber ins workspace wandern, muss ich es ja erst einmal ausführen. Wie geht das aus der GUI heraus ?

Momentan mache ich das noch manuell über das Command Window.


Wenn die Werte dann im Workspace stehen schreibe ich sie mit dem fogenden Befehl in der Test_OpeningFCn in die jeweiligen textboxen (hier nur mal Wert1):

Code:

set(handles.Wert1,'String',num2str(evalin('base','conf.test(1),wert1')));
 


Das funktioniert schon mal gut und der Wert steht dann in meiner edit textbox der GUI

Jetzt kann ich den Wert in der GUI verändern und möchte Ihn dann an die Simulation schicken.
Nur will einfach nix funktionieren.
Einfach mit
Code:
set_param('pfad_zum_/block','value',get(handles.Wert1,'String'));

geht es nicht wobei ich hier vieleicht noch str2num vor dem get nutzen muss. Oder brauch ich eval ???

Für ein paar Tipps wäre ich sehr Dankbar.

mfG
Jazzer
Private Nachricht senden Benutzer-Profile anzeigen
 
Jazzer
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.03.10
Wohnort: HH
Version: 2009b 32bit
     Beitrag Verfasst am: 30.03.2010, 12:22     Titel:
  Antworten mit Zitat      
mit set_param geht es nun doch wie gepostet nur ein m-file aus einer GUI heraus zu starten ist mir noch nicht gelungen.
Weiß da keiner was zu?
Private Nachricht senden Benutzer-Profile anzeigen
 
Shin
Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 30.03.2010, 13:08     Titel:
  Antworten mit Zitat      
Hi,
du musst in deiner Funktion (bspsw. Button) einfach nur den Dateinamen schreiben, dann wird dieses ausgeführt.
Bei mir als Beispiel:
Code:

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

t=get_var_names(handles);
load(t)
[....]
start = get(handles.beginn,'String');
stop = get(handles.ende,'String');
plotter1
guidata(hObject, handles);


plotter1.m ist meine m-file

Hoffe das hilft dir,
mfg, Shin
Private Nachricht senden Benutzer-Profile anzeigen
 
Jazzer
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.03.10
Wohnort: HH
Version: 2009b 32bit
     Beitrag Verfasst am: 30.03.2010, 13:22     Titel:
  Antworten mit Zitat      
so dachte ich das auch. Aber leider funktioniert es nicht.
mein m-file heist conf1 und in diesem sind einmal eine Struktur namens conf und ein paar variablen definiert.
Diese erscheinen dann aber nicht im workspace.
Das GUI führt die Zeile:
conf1;
aus, aber das workspace bleibt leer.
wenn ich conf1 ins Command Window tippe ist der workspace mit allen enthaltenen strukturen, variablen und sonst was gefüllt.

Was mach ich falsch?
Private Nachricht senden Benutzer-Profile anzeigen
 
Shin
Forum-Century

Forum-Century


Beiträge: 117
Anmeldedatum: 12.11.09
Wohnort: Karlsruhe
Version: ---
     Beitrag Verfasst am: 30.03.2010, 13:26     Titel:
  Antworten mit Zitat      
GUI und normale M-Files arbeiten mit unterschiedlichen Workspaces, daran leide ich momentan auch - komplett dahinter gestiegen bin ich noch nicht.

Ich habe in meinem GUI die m-File aufgerufen und am Ende der m-Files die Variablen (die während des m-File-Prozesses vorhanden sind) mit

Code:

var = whos;
for i=1:length(var)
    assignin('base', var(i).name, eval(var(i).name));
end


in den Workspace geschrieben.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jazzer
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 28.03.10
Wohnort: HH
Version: 2009b 32bit
     Beitrag Verfasst am: 30.03.2010, 13:32     Titel:
  Antworten mit Zitat      
Sehr gut... das funzt doch bestens. Danke Dir !!!!
Jetzt hab ich zwar in meinem Workspace auch die variablen aus der GUI aber damit kann ich leben.

Nochmal Danke,

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