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

Funktionsabhängigkeitsbaum

 

flashpixx
Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2012, 12:11     Titel: Funktionsabhängigkeitsbaum
  Antworten mit Zitat      
Hallo,

gibt es in Matlab eine Möglichkeit sich von einer Funktion / Klasse alle abhängigen Codeaufrufe anzeigen / ermitteln zu lassen. Wenn ich z.B. eine Funktion myFun habe und darin mySubFun1, mySubFun2 aufrufe, kann ich mir das angeben lassen, d.h. Matlab soll selbst ermitteln von welchen Funktionen die Funktion myFun abhängig ist

Danke
Private Nachricht senden Benutzer-Profile anzeigen


Andreas Goser
Forum-Meister

Forum-Meister


Beiträge: 3.654
Anmeldedatum: 04.12.08
Wohnort: Ismaning
Version: 1.0
     Beitrag Verfasst am: 28.06.2012, 14:54     Titel:
  Antworten mit Zitat      
So was wie DEPFUN?

Andreas
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
flashpixx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2012, 15:20     Titel:
  Antworten mit Zitat      
Ja, danke. Die Frage ist, funktioniert depfun auch mit Klassen?
Ich habe nämlich folgendes Problem. Ich bekomme ein Funktionshandle übergeben und möchte nun anhand des Handles ermitteln, welche Funktion / Klassen von diesem Handle benötigt werden, wobei ich die Matlab internen Funktionen nicht benötige. Also letztendlich eine Liste von allen abhängigen durch den User erzeugten Funktionen / Klassen

Ich habe depfun nun ein paar mal laufen lassen, selbst mit sehr einfachen Funktionen, aber es ist extrem langsam. Kann man das irgendwie geschickter angehen, damit es auch schneller wird?
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 28.06.2012, 15:55     Titel:
  Antworten mit Zitat      
Hallo

ich empfehle FDEP aus Fileexchange:

http://www.mathworks.com/matlabcentral/fileexchange/17291
Private Nachricht senden Benutzer-Profile anzeigen
 
flashpixx
Themenstarter

Forum-Guru

Forum-Guru


Beiträge: 355
Anmeldedatum: 19.04.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2012, 16:20     Titel:
  Antworten mit Zitat      
Naja das Script basier letztendlich auf den Matlab Builtin Funktionen depfun, depdir, ckdepfun, mlint, which

Da ich die genannte Funktionalität für ein eigenes Projekt brauche, muss ich es selbst entwickeln. Aber das genannte Script liefert schon einmal einen guten Einblick

Im Grunde liefert ein
Code:
depfun('myfun', '-expand', '-quiet')


ja schon das geeignete Ergebnis, es ist nur extrem unperformant, weil er wirklich jede Funktion listet (ich nehme an, intern wird dies per Backtracking gelöst).

Als Idee habe ich folgendes
Code:

function r = userdepfun(paths)
    funlist = depfun(paths, '-toponly', '-quiet');
    mroot   = matlabroot;
   
    funlist = funlist(~strncmp(funlist,mroot,length(mroot)));
    r       = setdiff(funlist, paths);

    if ~isempty(r)
        r = userdepfun(r);
    end
    r = unique([funlist; r]);
 


es liefert schon recht gute Ergebnisse, nur bei Klassen gibt es noch Probleme, denn wenn eine Klasse private Methoden hat, die in einzelnen Dateien unterhalb des Klassenverzeichnis (@myclass) liegen, werden diese nicht gefunden. depfun liefert zwar die Klassendatei, aber leider davon nicht die Abhängigkeiten
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.