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

Funktionen im M-File

 

seasidetobi
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2008, 01:07     Titel: Funktionen im M-File
  Antworten mit Zitat      
Hallo, vielleicht kann mir einer weiterhelfen:
Ich habe ein m-file mit einer sequenziellen Programmieren. Nun möchte ich einige Befehle in eine (oder mehrere) Funktion(en) "auslagern".
Ich weiß, dass man Funktionen in seperate M-Files speichern kann, aber am liebsten würde ich die Funktionen - weil sie sehr kurz sind - in der gleichen Datei, also im gleichem M-File belassen.
Wenn das nicht geht, würde ich - da ich viele kleine Funktionen habe - mehrere Funktionen in EINE externe Datei speichern. Ist das irgendwie möglich?
Danke für eure Hilfe und schönen Gruß,
TB
_________________

TB
Private Nachricht senden Benutzer-Profile anzeigen


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 08.11.2008, 13:06     Titel:
  Antworten mit Zitat      
Hallo,

du kannst in der gleichen Datei bzw. Funktion andere Funktionen definieren, schöner wär es ganz unten, und mit einem 'local'-Prefix definieren.

[Ausgabe]=Ueberfunktion(Eingabe)
..........
X = local_Unterfunkt(Eingabe*Eingabe)
...........
............



Parameter = local_Unterfunkt(Parameters)
hier erfolgt die Definition der Funktion;
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
seasidetobi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 05:24     Titel:
  Antworten mit Zitat      
Danke für die Antwort, aber leider konnte ich deinen Tipp nicht in die Tat umsetzten. Hast du ein Skript mit einem einfachen Beispiel, das ich in Matlab kopieren kann ?
Danke
_________________

TB
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 13:58     Titel:
  Antworten mit Zitat      
Hallo,

so wie es josekamara bereits erwähnt hat, kannst du natürlich für jede Funktion ein eigenes M-File anlegen.

Code:
y = function sqr (x)
  y = x.^2;
return
Dies speicherst du als sqr.m ab, und schon kannst du es - vorausgesetzt es ist im Matlab-Suchpfad enthalten - in allen anderen Funktionen bzw. auch auf im Command-Fenster verwenden. Alternativ gibt es die Möglichkeit, lokale Funktionen zu definieren. z.B.

Code:
function main_Fcn
[...]
disp(sqr(12));
return

% lokale Funktion
y = function sqr (x)
  y = x.^2;
return
Allerdings ist hier die Funktion sqr von außen nicht mehr sichtbar bzw. ausführbar.

MfG
Private Nachricht senden Benutzer-Profile anzeigen
 
seasidetobi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 19:41     Titel:
  Antworten mit Zitat      
Anscheind ist es dann nicht möglich, in einer ausführbaren Datei eine Funktion zu definieren, sondern man kann nur Unterfunktionen in "Funktions-Dateien" definieren...
Wenn man die Unterfunktion dann nicht von außen direkt ausführen kann, bleibt einem demnach nur die Möglichkeit, dies durch Parameterwahl und -weitergabe von der Hauptfunktion an die Unterfunktion(en) zu umgehen, oder sehe ich das falsch?
Danke trotzdem und Grüße,
TB
_________________

TB
Private Nachricht senden Benutzer-Profile anzeigen
 
dib0r
Forum-Guru

Forum-Guru


Beiträge: 413
Anmeldedatum: 09.05.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2008, 20:08     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Anscheind ist es dann nicht möglich, in einer ausführbaren Datei eine Funktion zu definieren, sondern man kann nur Unterfunktionen in "Funktions-Dateien" definieren...

wenn du mit "einer ausführbaren Datei" ein Skript meinst, dann nein - es ist nicht möglich. Aber auch Funktionen lassen sich ausführen, z.B. kannst du in das Hauptfenster
Code:
[maxVal maxIdx] = max(rand(100,4));
eingeben, ist also ausführbar und das ganze ist in einer Funktion verpackt.

Zitat:
Wenn man die Unterfunktion dann nicht von außen direkt ausführen kann, bleibt einem demnach nur die Möglichkeit, dies durch Parameterwahl und -weitergabe von der Hauptfunktion an die Unterfunktion(en) zu umgehen, oder sehe ich das falsch?
Richtig, das ist der Unterschied zwischen lokalen Funktionen und - naja, sagen wir mal globalen Funktionen. Wobei man natürlich auch Variablen aus dem Workspace laden kann u.ä.
Im Unterschied zu Skripten besitzen Funktionen einen lokalen Workspace - das heisst dass alle Variablen, die innerhalb einer Funktion erzeugt werden bzw. Modifikation von Eingabewerten von außen nicht sichtbar sind. Allerdings hat man die Möglichkeit, Ausgabewerte zu definieren. Das ist genau der Vorteil von Funktionen, dass alles Unnötige einfach wieder verschwindet und dass man Kaskadierungen und Rekursionen einfach implementieren kann.

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