Verfasst am: 26.08.2011, 18:13
Titel: GUi soll ein m-file(skript) ausführen
Servus,
ich bin gerade ein wenig am verzweifeln. Ich habe einer Gui erstellt, die xml-file manipuliert und die dazugehörigen acf. files erstellt. Diese sollen in einer schon vorhandenen Cosimulation dann simuliert werden.
Das heißt ich öffne die Gui, maniepuliere meine XML files und mochte dann aus der gui heraus ein m.file ausführen lassen. Dieses m.file enthält einige Variablen die die Gui nicht kennt der Fehler sieht folgendermaßen aus :
??? Error using ==> Cosim_ADAMS_ at 229
Error due to multiple causes.
Error in ==> run at 74
evalin('caller',[script ';']);
Error in ==> Untitled2 at 7
run('Cosim_ADAMS_')
Caused by:
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_sysdir' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_sysdir'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_cwd' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_cwd'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_host' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_host'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_exec' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_exec'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_prefix' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_prefix'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_inputs' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_inputs'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_outputs' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_outputs'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_prefix' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_prefix'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'stepsize' cannot be
evaluated. MATLAB error message: Undefined function or variable 'stepsize'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_static' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_static'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter '[ADAMS_init]' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_init'.
Code:
% --- Executes on button press in pushbutton3. function pushbutton3_Callback(hObject, eventdata, handles) % hObject handle to pushbutton3 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)
er=uigetfile([pwd,'\MyCosim/*.mdl']);
if((er==0)==1) return end
%Zielverzeichnis suchen
pruef= get(handles.listbox3,'Value');
if((pruef<1)==1) errordlg('NO maneuver in Listbox','NO Maneuver','modal') return else ifexist('Listbox_maneuver.txt','file')&& exist('Listbox_path.txt','file')
es=[pwd,'\MyCosim\',er];
esa=pwd;
% Kopieren des mdl-Files in den Aktuellen Ordner copyfile(es,esa);
%Auslesen der Maneuver
hop=fopen('Listbox_maneuver.txt');
hip=fopen('Listbox_path.txt');
Data=textscan(hop, '%s', 'delimiter', '\n', 'whitespace', '');
%list=textread('Listbox_maneuver.txt','%s');
lis=textread('Listbox_path.txt','%s');
CStr = Data{1};
fclose(hip);
fclose(hop);
zeilen = size(CStr,1);
addpath(pwd);
for gos=1:zeilen
??? Error using ==> Cosim_ADAMS_ at 229
Error due to multiple causes.
Error in ==> simul>pushbutton3_Callback at 1605
Cosim_ADAMS_
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> simul at 42
gui_mainfcn(gui_State, varargin{:});
Error in ==>
@(hObject,eventdata)simul('pushbutton3_Callback',hObject,eventdata,guidata(hObject))
Caused by:
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_sysdir' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_sysdir'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_cwd' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_cwd'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_host' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_host'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_exec' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_exec'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_prefix' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_prefix'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_inputs' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_inputs'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_outputs' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_outputs'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_prefix' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_prefix'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'stepsize' cannot be
evaluated. MATLAB error message: Undefined function or variable 'stepsize'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter 'ADAMS_static' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_static'.
Error using ==> Cosim_ADAMS_ at 229
Error in 'Cosim_ADAMS/ADAMS/adams_sub/ADAMS Plant1': Parameter '[ADAMS_init]' cannot be
evaluated. MATLAB error message: Undefined function or variable 'ADAMS_init'.
??? Error while evaluating uicontrol Callback
culo123
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.12.2011, 09:00
Titel:
habe genau das gleich Problem bzw. Fehler...
ich möchte gerne wissen wie ich ein m-file durch eine gui ausgeführt werden kann. Mein Wissensstand ist bis jetzt so, dass ich weiß das die GUI nicht auf die Variablen des m-file zugreifen kann, da sie sich in einer anderen Umgebung befinden.
Als Beispiel würde ich gerne einfach nur mal eine Variale f=[1:10]aus einem test.m m-file durch einen pushbutton in der GUI in den Workspace schreiben. Wie man das m-file in die GUI einfügt ist mir bekannt. Ich glaube das würde mir sehr helfen.
Lieg ich da richtig das ich den Befehl in die Callback function vom Pushbutton schreiben muss oder kommt der Befehl woanders rein?
Kann mir jemand helfen,indem er mal die Befehlszeile für das explizite Beispiel hier rein schreibt???
vielen Dank für Deine schnelle Hilfe. Das Beispiel ist leider noch nicht ganz treffend für mich. Ich hänge immer noch in den Seilen. Ich will den Wert eines Sliders im GUI auslesen und als neuen Anfangswert im matlab-file einfügen und dann mit einem pushbutton das matlab-file mit diesem neuen Anfangswert laufen lassen.
Das Problem bei dem Beispiel von Dir ist für mich, dass die veränderte Funktion direkt im GUI drinsteht (die Kurvenfunktion). Bei mir steht die Funktion außerhalb des GUIs in einem separaten File und muss den Wert dort von der GUI erhalten. Vielleicht geht das auch gar nicht?
klar geht das. Es ist egal, ob die Funktion im gleichen File steht oder in einem separaten File. Sämtliche Matlab-Funktionen stehen ja auch in separaten Files und werden nur aufgerufen.
Du musst nur die Funktion aufrufen und die Werte entsprechend übergeben. Der Aufruf der Funktion muss in der Pushbutton-Callback erfolgen.
Wenn du ein bisschen Code postest, dann kann dir hier schnell und präzise weitergeholfen werden.
Alex, vielen Dank schon mal! Ich sitze an meiner Diplomarbeit und habe leider Druck wegen der Abgabe und hänge an dieser Sache fest. Keine Ahnung, warum ich zu blöd dafür bin. Ich komme einfach nicht weiter.
Ich habe das Programm mit angehangen. Aber eigentlich geht es nur darum, mit dem Schieberegler im GUI Werte rauszulesen. Diese stehen z.B. für die Anfangsgeschwindigkeit u0 im Script "glaze_programm". Den Wert, den ich im Schiebregler eingestellt habe, möchte ich jetzt in meinem glaze_programm für u0 einsetzen. Dann möchte ich im Anschluss auf den Pushbutton drücken und das glaze_programm mit diesem neuen Anfangswert laufen lassen.
Es hört sich bei dir so an, dass das wahrscheinlich eine ganz einfache Sache ist und ich sie einfach nur nicht hinbekomme...
Code:
% Matlab-Script mit dem auszuführenden Programm. Hier sollen die Anfangsbedingungen manipuliert werden
Leider doch nochmal ich. Ich bleibe jetzt an einem anderen Problem hängen: Ich möchte mehrere Anfangsbedingungen in meinem Script "glaze_programm" via GUI ändern. Wenn ich nur einen Paramameter ändere, klappt alles wunderbar. Will ich jetzt aber z.B. auch den Radius r0 ändern komme ich ins schwimmen.
Ich möchte z.B. u0 und r0 verändern und dann mit einem Druck auf den Pushbutton beide Anfangsvariablen in meinem Script verändern und dann laufen lassen. Mit varargin komme ich irgendwie nicht weiter, oder ich stelle mich wieder zu dumm an. Ich blicke es einfach nicht.
mit VARARGIN bist du schon auf einem sehr guten Weg.
Wenn du den ersten Ansatz von mir weiter verfolgst, dann ist die Übergabe der Werte ähnlich, du musst halt nur 2 Werte übergeben. (Frage: Wird der zweite Wert auch über einen Slider eingestellt?)
In deiner aufzurufenden Funktion könntest du dann folgendes schreiben:
Code:
% Matlab-Script mit dem auszuführenden Programm. Hier sollen die Anfangsbedingungen manipuliert werden
Danke Alex.
Ich probiere das jetzt und wenn ich nicht weiterkomme, melde ich mich wieder. Ja, der zweite Wert (es sind insgesamt vier Parameter) wird auch über den Slider eingestellt.
Alex, das hilft mir grade so ungemein, auch dass Du immer so schnell antwortest. Nochmals Danke.
Error in ==> glaze_programm at 65
m_d=rho_d*u*r^2*phi_d;%m_d=zeros(nstep,1); % zuvor ging voraus, dass u=u0 ist. Deswegen hier wohl die Fehlermeldung, da er wohl den Wert für u0 aus der Übergabe nicht erkennt.
Error in ==> GUI_Slider_19122011_2_Variablen>pushbuttonProgramm_laufen_lassen_Callback at 130
glaze_programm(get(findobj('style','slider'),'value'))
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
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.