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

Funktionsaufruf ohne Workspace wechsel?

 

jaepen
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.07.2009, 11:14     Titel: Funktionsaufruf ohne Workspace wechsel?
  Antworten mit Zitat      
Hallo

Ich hab mal eine kurze Frage.
Ist es möglich bei einem Funktionsaufruf den Workspace nicht zu verlassen?
D.h aus der Funktion heraus auf alle Variablen zugreifen zu können ohne diese einzeln mit "global" oder "evelin" bekannt machen zu müssen?

gruß Jaepen
Private Nachricht senden Benutzer-Profile anzeigen


outsider
Forum-Meister

Forum-Meister


Beiträge: 806
Anmeldedatum: 03.09.07
Wohnort: München
Version: R2012b
     Beitrag Verfasst am: 13.07.2009, 11:30     Titel:
  Antworten mit Zitat      
nein - das geht nicht ohne weiteres...

Du hast die Wahl:
1. alles Global definieren
2. mit evalin und assignin zu arbeiten
3. Variablen mit dem Funktionsaufruf übergeben
4. Skritpe statt Funktionen verwenden


MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.07.2009, 11:50     Titel:
  Antworten mit Zitat      
oder 5.: Nested Functions verwenden.

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
 
jaepen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.07.2009, 12:19     Titel: schade....
  Antworten mit Zitat      
....diese möglichkeiten sind mir soweit alle bekannt.
Vll mach ich meine Idee noch etwas allgemeiner.

Also, ich habe ein riesen Skript geschrieben. Leider isd das jetz ziemlich unübersichtlich. Nun will ich einzelteile in Funktionen auslagern damit es übersichtlich wird. Das Skript soll dann nur noch aus Funktionsaufrufen bestehen.
Hat vll jemand nee andere idee wie man das machen könnte?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.07.2009, 12:27     Titel:
  Antworten mit Zitat      
Hmm... Es kommt darauf an WIE du die Variablen verwendest. Hast du ein paar Eingangsgrößen und der Rest basiert auf diesen? Würdest du einige Werte nur ein einigen von einander abhängigen Funktionen benötigen? Dann würde ich zu 3. tendieren und die jeweils benötigten Variablen mit dem Funktionsaufruf ü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
 
jaepen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.07.2009, 12:53     Titel:
  Antworten mit Zitat      
hmmm
Das Problem ist, ich hab sehr viele Variablen (ca. 30) die ich fast alle in jeder Funktion benötige.
Daher neige ich zum evalin.
Aber irgendwie bekomm ich das auch nicht hin mehrere variablen mit dem evalin gleichzeitig zu übergeben. und jede einzeln ist auch nicht gerade schön.
Geht das nicht das ich mit dem evalin mehrere übergebe?
Laut der hilfe ja, aber bei mir klappt das nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 13.07.2009, 13:00     Titel:
  Antworten mit Zitat      
Wie versuchst du es denn?

Wenn es so viele sind, die du in jeder Funktion benötigst, dann empfehle ich eine Strucktur anzulegen. Du brauchst damit nur vor jede Variable den Struckt-Präfix zu schreiben:
Code:
Parameter.var1 = [1 2 3];
Parameter.var2 = [4 5 6];
Parameter = my_fun(Parameter);

function Parameter = my_fun(Parameter)
Parameter.var3 = Parameter.var1 + Parameter.var2;


"Parameter" ist in diesem Fall die Strucktur-Variable und diese brauchst du dann nur an jede Funktion übergeben und das einzige was du machen musst, ist "Parameter." vor jede "wichtige" Variable schreiben.

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
 
jaepen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 13.07.2009, 13:07     Titel:
  Antworten mit Zitat      
Also versucht ha ich es jetzt so

Code:

a=2;
b=3;

function [] = f_init()
[x ,y] = evalin ('base','a','b') ;
 


aber das funktioniert nicht. Warum?

An die Idee mit der Struktur dachte ich auch schon. Aber meine varablen lese ich aus einem .mat file ein. d.h ich müsste die variablen wieder alle umbenennen, da ich das matfile nicht selbst erzeuge.
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 13.07.2009, 13:57     Titel:
  Antworten mit Zitat      
Hallo,

wenn die Variablen aus einem .mat-File kommen, ist es ja noch besser:
Code:
Parameter = load('NameDerDatei.mat');

liest die Daten als Struktur ein ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
jaepen
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 13.04.09
Wohnort: ---
Version: 7.5.0.342 (R2007b)
     Beitrag Verfasst am: 14.07.2009, 08:31     Titel: auch ne Idee ;-)
  Antworten mit Zitat      
Danke
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.