|
seasidetobi |

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 19.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2008, 00:07
Titel: Funktionen im M-File
|
 |
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
|
|
|
|
|
josekamara |

Forum-Meister
|
 |
Beiträge: 529
|
 |
|
 |
Anmeldedatum: 26.04.08
|
 |
|
 |
Wohnort: München
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.11.2008, 12:06
Titel:
|
 |
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
|
|
|
seasidetobi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 19.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2008, 04:24
Titel:
|
 |
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
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2008, 12:58
Titel:
|
 |
Hallo,
so wie es josekamara bereits erwähnt hat, kannst du natürlich für jede Funktion ein eigenes M-File anlegen.
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.
Allerdings ist hier die Funktion sqr von außen nicht mehr sichtbar bzw. ausführbar.
MfG
|
|
|
seasidetobi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 11
|
 |
|
 |
Anmeldedatum: 19.06.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2008, 18:41
Titel:
|
 |
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
|
|
|
dib0r |

Forum-Guru
|
 |
Beiträge: 413
|
 |
|
 |
Anmeldedatum: 09.05.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.11.2008, 19:08
Titel:
|
 |
|
 |
|
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
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
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|