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

Mehrere Funktionen definieren und verwenden

 

bonestruca
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2010, 10:39     Titel: Mehrere Funktionen definieren und verwenden
  Antworten mit Zitat      
Moin,
hab ein sehr aufwändiges Script zur Messdatenauswertung geschrieben. Zwecks Übersichtlichbarkeit und Erweiterungsoptionen würde ich gerne die Hauptbestandteile als Funktionen definieren.
Wie mache ich das ?

In der .m file kann ich keine Funktionen definieren.
Wenn ich extra eine neue .m file erstelle, kann in dieser nur eine Funktion definiert werden, da diese ja so heißen muss, wie der Dateiname.

Was ich gerne hätte:
Eine Datei mit vielen Funktionendefinition, sozusagen ein "Funktionspool". In der richtigen .m File rufe ich die Funktionen dann nurnoch nach belieben auf.

Aufgrund der Vielzahl an neuen Funktionen ist es keine Option für jeden Funktion eine neue Datei zu erstellen.

Was gibt es für Lösungen ?
Vielen Dank !
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: 26.07.2010, 10:42     Titel:
  Antworten mit Zitat      
Hallo,

du kannst den Skript auch als Funtion definieren ohne input/output.
Code:

funnction [] = skriptname()
 


Die Anderen Unterfunktionen kannst als Nested functions definieren oder auch als separate Unterfunktionen.
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
bonestruca
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2010, 11:47     Titel:
  Antworten mit Zitat      
Danke das funktioniert.
Jedoch ist das Fenster meines Workspaces jetzt leer, da die Funktionen wohl ihre eigenen Workspaces nutzen. Wie kann ich auf diese zugreifen ?
Wenn eine Funktion aufgerufen wurde möchte ich danach noch im Workspace mit den Variablen arbeiten.
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: 26.07.2010, 11:52     Titel:
  Antworten mit Zitat      
Ja dann musst du die Ausgaben auswählen und dann als put der funktion eingeben.

Code:

function [Output] = skriptname()
 


Wenn vielen Outputs sind, dann kannst du sie unter einer Struktur speichern.

Code:

function [Output] = skriptname()

Output.variable1
........
........
Output.variable10
 

_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
bonestruca
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2010, 12:22     Titel:
  Antworten mit Zitat      
ich nutze das arbeiten im workspace hauptsächlich um fehler zu erkennen und beheben (falls variablenwerte nicht stimmen oder so). wenn ich jetzt jede variable im script zusätzlich als output definieren muss, kostet mich das sehr viel zeit. mehr zeit als ich durch das definieren von funktionen gewinne. gibt es keine möglichkeit direkt den workspace einer funktion aufzurufen ?
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: 26.07.2010, 12:48     Titel:
  Antworten mit Zitat      
Jede Unterfunktion hat einen Output. Alle Outputs kannst du unter einer Struktur speichern.
Code:


function [Output] = skriptname()

function Output.variable1 =unterfunktion1()
........
........
function Output.variable10 =unterfunktion10()
 

_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
bonestruca
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 26.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.07.2010, 12:56     Titel:
  Antworten mit Zitat      
Vielen Dank für deine Hilfe,
wie gesagt möchte ich aber nicht jeder Variable extra "speichern" indem ich sie als Output definiere, da der Arbeitsaufwand für das Ergebnis nicht angemessen wäre.
Ich möchte den Workspace einer Funktion sehen, wie funktioniert das ?
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: 26.07.2010, 13:00     Titel:
  Antworten mit Zitat      
wenn die Berechnung zu ende ist, dann wird nur die Output an den Workspace gezeigt.

Du kannst vielleicht einen Breakpoint oder keyboard innerhalb der Funktion einsetzen. So wird die Berechnung pausiert und die aktuellen Werte anschauen.
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 02.08.2010, 01:16     Titel:
  Antworten mit Zitat      
Eigentlich sollte der Debugger immer in den Workspace der Funktion hüpfen... gib mal ein beispiel wo du nix mehr "siehst"
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
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 - 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.