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 aus anderer Gui übernehmen

 

Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2008, 13:05     Titel: Variablen aus anderer Gui übernehmen
  Antworten mit Zitat      
Soooo ich mal wieder Smile,
also ich Starte über einen Pushbutton eine Zweite gui.

Code:
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)

setgrid; %hier wird die 2. Gui Gestartet

 


Wie kann ich Dinge die ich in der setgrid.fig/.m gemacht habe in mein 'Hauptprogramm' übernehmen?

Code:

%so nach der Art:
[Wert1, Wert2, Wertr] = setgrid;
 

Muss ich da in der setgrid.m noch irgendeine Rückgabe definieren? Wenn ja wo und wie?

Würd mich über eine Antwort sehr freuen...

Schönes Wochenende
Timo Beil


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 13:17     Titel:
  Antworten mit Zitat      
Moin,

da du deine GUIs anscheinden mit GUIDE erstellst, brauchst du nix weiter zu machen ausser die Rückgabewerte in dem Cellarray varargout abzuspeichern.

Beispiel:

HauptGUI:
Code:
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)

[wert1 wert2 wert3] = setgrid; % hier wird die 2. Gui Gestartet


setgrid:
Code:

% an der Stelle an der du die Werte berechnest:
varargout{1} = wert1;
varargout{2} = wert2;
varargout{3} = wert3;

% alternativ:
% varargout = {wert1, wert2, wert3};
 


Gruß
Alex

PS: Schon mal über 'ne Registrierung nachgedacht? Wink
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2008, 13:25     Titel:
  Antworten mit Zitat      
Darf denn z.B. der Wert 1 auch ne Matrix sein? Also
Wert1=[1 3 4 5, 6 7 8 9]

Danke,
hast mir sehr geholfen Smile

Ciao
Timo Beil

Ok, melde mich am Wochenende an Smile
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 13:33     Titel:
  Antworten mit Zitat      
Ja, deshalb ist der Output ja ein Cellarray, da kann drinstehen was du willst...
Du kannst Matrizen, Stucts, String, etc. aufeinmal übergeben...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.10.2008, 14:23     Titel:
  Antworten mit Zitat      
Irgendwie Funktioniert das nich Sad

Also In der 2.Gui hab ich
Zitat:

% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
varargout{1} = handles.antenna.x(handles.antenna.z>0.Cool
varargout{2} = handles.antenna.y(handles.antenna.z>0.Cool


In der 1. Gui stare ich die 2. so:
Code:
[test1 test2]=setgrid;

Aber irgendwie klappt das nicht... Sad

Im command window gibt matlab fogendes aus:
Zitat:

??? Error using ==> setgrid>setgrid_OutputFcn
Too many output arguments.

Error in ==> gui_mainfcn at 248
[varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);

Error in ==> setgrid at 40
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

Error in ==> winplan>pushbutton1_Callback at 93
[handles.asd1 handles.asd2]=setgrid;

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

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

??? Error using ==> winplan('pushbutton1_Callback',gcbo,[],guidata(gcbo))
Error using ==> setgrid>setgrid_OutputFcn
Too many output arguments.

??? Error while evaluating uicontrol Callback


Wenn ich es so mache:
Code:
[test1]=setgrid;

Geht es aber in der test1 steht nur schrott drin. Um genau zu sein: 185.0039 das hat aber nichts mit dem was ich will zu tun.

Die Zeile
Code:
[test1 test2]=setgrid;
einfach übergeht. Das heißt, ich habe gedacht der debugger steht an der stelle bis er die Rückgabewerte erhalten hat. Aber er läuft einfach drüber, da kann er die Daten die ich mit der Gui2 abfragen will ja noch garnicht haben. Es sei denn, Matlab ist ein nichtkausases System Mad

Danke nochmals
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 10.10.2008, 14:29     Titel:
  Antworten mit Zitat      
Upsi hab mich vertippt...

Probier mal:
Code:
% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton13 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
varargout(1) = {handles.antenna.x(handles.antenna.z>0.8)}
varargout(2) = {handles.antenna.y(handles.antenna.z>0.8)}

_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2008, 08:20     Titel:
  Antworten mit Zitat      
Schöne neue Woche euch allen Smile

leider bin ich bei meinem Problem noch immer nicht weiter.
Code:
???  In an assignment  A(I) = B, the number of elements in B and
 I must be the same.

Error in ==> setgrid>pushbutton13_Callback at 450
varargout(1) = handles.antenna.x(handles.antenna.z>0.8)

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

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

??? Error using ==> setgrid('pushbutton13_Callback',gcbo,[],guidata(gcbo))
 In an assignment  A(I) = B, the number of elements in B and
 I must be the same.

??? Error while evaluating uicontrol Callback

>>


So ist es mit den Runden Klammern Sad

Nochwas:
Mit was kann ich denn die Gui2 beenden, denn wenn ich die Variablen in de Gui1 habe brauche ich die Gui2 nichtmehr.

Danke
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.10.2008, 08:36     Titel:
  Antworten mit Zitat      
Moin,

probier mal bitte diese Möglichkeit:
Code:
tmp1 = handles.antenna.x(handles.antenna.z>0.8)
tmp2 = handles.antenna.y(handles.antenna.z>0.8)
varargout(1) = {tmp1};
varargout(2) = {tmp2};

Die Ausgabe im Command Window von tmp1 und tmp2 ist aber schon das, was übergeben werden soll?

Zum Schließen der GUI:
Einfach in der letzten Callback-Funktion die ausgeführt wird (meist, die Pushbutton-Callback) ein
Code:


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2008, 13:56     Titel:
  Antworten mit Zitat      
Hallo @,
leider funktioniert das immer noch nicht...
Aufruf in der GUI1:
Code:
[asd1 asd2]=setgrid;
msgbox(int2str([asd1]))
msgbox(int2str([asd2]))
guidata(hObject, handles);


Nochmals die GUI2:
Code:
% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton13 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
tmp1 = handles.antenna.x(handles.antenna.z>0.8)
tmp2 = handles.antenna.y(handles.antenna.z>0.8)
varargout(1) = {tmp1};
varargout(2) = {tmp2};
close(setgrid)
 


Danke Smile
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.10.2008, 14:21     Titel:
  Antworten mit Zitat      
Was wird denn angezeigt, und was soll angezeigt werden. Wird dir das richtige angezeigt, wenn du in GUI2
Code:
aufrufst?
Und ohne Fehlermeldung oder etwas mehr Input ist es sehr schwer zu helfen...

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.10.2008, 14:29     Titel:
  Antworten mit Zitat      
Ich bekomm keine Fehlermeldung mehr Sad

display gibt das richtige aus... nur dass ich in der gui 1 nacher nichts in den rückgabevariabeln drinne habe Sad

kann das sein dass ich die gui2 (setgrid) irgendwie anderst starten muss so dass matlab wartet bis diese beendet wird und dann in der gui 1 weiter macht?
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2008, 07:54     Titel:
  Antworten mit Zitat      
Sorry,
hab doch eine Fehlermeldung gefunden... Die hat es immer ganz weit nach oben raus gespult Sad

Zitat:
??? Error using ==> setgrid>setgrid_OutputFcn
Too many output arguments.

Error in ==> gui_mainfcn at 248
[varargout{1:nargout}] = feval(gui_State.gui_OutputFcn, gui_hFigure, [], gui_Handles);

Error in ==> setgrid at 40
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

Error in ==> winplan>pushbutton1_Callback at 93
[asd1 asd2]=setgrid;

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

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

??? Error using ==> winplan('pushbutton1_Callback',gcbo,[],guidata(gcbo))
Error using ==> setgrid>setgrid_OutputFcn
Too many output arguments.



Danke Smile
 
Timo Beil

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.10.2008, 08:00     Titel:
  Antworten mit Zitat      
Also, hab jetzt nur noch die eine Variable drinne...
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)

[asd1]=setgrid;
msgbox(int2str([asd1]))
guidata(hObject, handles);


die Messagebox bekomme ich jetzt schon beim starten der der 2. Gui... Sad

Wenn ich in der Gui2 auf den Pussbutton drücke bekomme ich folgenden fehler:
Zitat:
??? Reference to non-existent field 'z'.

Error in ==> setgrid>pushbutton13_Callback at 450
tmp1 = handles.antenna.x(handles.antenna.z>0.Cool ;

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

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

??? Error using ==> setgrid('pushbutton13_Callback',gcbo,[],guidata(gcbo))
Reference to non-existent field 'z'.

??? Error while evaluating uicontrol Callback


hier nochmal der aktuelle Code:
Code:

% --- Executes on button press in pushbutton13.
function pushbutton13_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton13 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
tmp1 = handles.antenna.x(handles.antenna.z>0.8) ;
tmp2 = handles.antenna.y(handles.antenna.z>0.8) ;
%display(tmp1)
%display(tmp2)
varargout(1) = {tmp1};
varargout(2) = {tmp2};
close(setgrid)


Danke, für euere (deine) Hilfe Smile
 
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 - 2024 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.