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

Objekt als Funktionsparameter?

 

Matlos

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2009, 17:12     Titel: Objekt als Funktionsparameter?
  Antworten mit Zitat      
Hi Forum!

Ich habe ein Programm mit einem Hauptfenster und noch vielen Parameter-Fenstern.
jetzt habe ich im m-file des hauptfensters objekte deklariert, deren parameter nachher im laufenden programm über diese Parameter-fenster verändert werden sollen.

mein versuch war, die objekte als parameter im funktionsaufruf zu übergeben. für den hinweg hats geklappt (also von hauptfenster nach parameterfenster) für den rückweg nicht.
woran kann das liegen?

hier ein (exemplarischer) versuch:
hauptfenster:
Code:

objekt1 = modem.psk;
x = parameterw(objekt1);
objekt1 = x;
 


und im parmeterw
Code:

h = varargin{1}; %funktioniert
h.M = 4; %Parameter ändern
varargout = h;
 


bin noch nicht wirklich weit, was matlab betrifft. mach ich da schlimme schlimme fehler oder geht das ganz so ähnlich?
danke schonmal.
Grüße
Matlos


Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.04.2009, 19:32     Titel:
  Antworten mit Zitat      
Normalerweise sollte das so klappen. Und normalerweise solltest Du dir das zurückgeben des Handles auch sparen können. Du übergibst der Funktion dein Handle und zurückgegeben wird einfach nichts. Das Objekt bleibt ja bestehen und das Handle zum Objekt ändert sich beim ändern einer Eigenschaft nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlos

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2009, 17:00     Titel:
  Antworten mit Zitat      
hi epfi!
erstmal danke für die reaktion!
habe dennoch verständnisprobleme....

wenn ich die variable h benutze, also
Code:
,
dann bezieht sich doch jegliche änderung der parameter doch nur auf h? wie kriege ich denn heraus, welches handle mein objekt, das ich da übergebe, hat?und wie beeinflusse ich das dann am besten?

Gruß
Matlos
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2009, 19:00     Titel:
  Antworten mit Zitat      
Außerhalb deiner Funktion ist objekt1 eine Variable, deren Wert das Handle deines Objekts ist. Wenn Du den Wert von objekt1 an die Funktion übergibst und dieser Wert wird in der Funktion der Variablen h zugewiesen, dann ist h eine Variable, deren Wert das Handle das Objekts ist.

Kurz und knapp: Wenn Du in der Funktion über h auf das Objekt zugreifst, kommt das aufs gleiche raus, wie wenn Du außerhalb der Funktion über objekt1 auf das Objekt zugreifst.

Beeinflussen kannst Du dein Objekt dann mit der Funktion set oder allen möglichen für das Objekt zulässigen Operationen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlos

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2009, 19:04     Titel:
  Antworten mit Zitat      
Achso, h ist dann sozusagen das objekt und hat nicht nur dessen eigenschaften übernommen?
Das war mir nicht klar, ich dachte, h sei ein neues Objekt, das dann parallel zu dem übergebenen exisitiert und nicht von der existenz des anderen weiß.
klasse, vielen dank für die hilfe!
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2009, 20:16     Titel:
  Antworten mit Zitat      
Ja, im Prinzip ist es genau so. Nur, dass h das Handle ist, das Dein Objekt identifiziert und nicht das Objekt selbst.

Bemerkbar macht sich dieser feine Unterschied zum Beispiel, wenn das Objekt selbst riesig groß ist (z.B. 500MB). Wenn Du so ein Objekt einer Funktion übergeben würdest, würde Matlab eine Kopie erstellen, mit der Du dann in der Funktion arbeitest. Das Handle zu dem Objekt ist aber unabhängig von der Objektgröße immer gleich klein und kann auch ohne schlechtes Gewissen an Funktionen übergeben werden.
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 - 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.