Come posso generare un elenco di dipendenze delle funzioni in MATLAB?

Per distribuire una funzione che ho scritto che dipende da altre funzioni che ho scritto che hanno le loro dipendenze e così via senza distribuire ogni m-file che abbia mai scritto, ho bisogno di capire quale sia l’elenco completo delle dipendenze per un dato m-file. C’è un modo built-in / liberamente scaricabile per fare questo?

Nello specifico sono interessato alle soluzioni per MATLAB 7.4.0 (R2007a), ma se esiste un modo diverso di farlo nelle versioni precedenti, è assolutamente necessario aggiungerle qui.

Per le nuove versioni di Matlab (ad es. 2007 o 2008) è ansible utilizzare le funzioni integrate:

  1. mlint
  2. rapporto di dipendenza e
  3. rapporto di copertura

Un’altra opzione è usare il profiler di Matlab. Il comando è profile, può anche essere usato per tracciare le dipendenze. Per usare il profilo, si potrebbe fare

>> profile on % turn profiling on >> foo; % entry point to your matlab function or script >> profile off % turn profiling off >> profview % view the report 

Se il profiler non è disponibile, allora forse le seguenti due funzioni sono (per pre-MATLAB 2015a):

  1. depfun
  2. depdir

Per esempio,

 >> deps = depfun('foo'); 

dà una struttura, deps, che contiene tutte le dipendenze di foo.m.

Dalle risposte 2 e 3 , le versioni più recenti di MATLAB (post 2015a) utilizzano invece matlab.codetools.requiredFilesAndProducts .

Vedi le risposte

MODIFICARE:

Avvertenze grazie a @Mike Katz commenta

  • Ricorda che il Profiler mostrerà solo i file che sono stati effettivamente utilizzati in quelle esecuzioni, quindi se non si passa attraverso ogni ramo, si possono avere dipendenze aggiuntive. Il rapporto sulle dipendenze è un buon strumento, ma risolve solo le dipendenze statiche sul percorso e solo per i file in una singola directory.

  • Depfun è più affidabile ma ti dà ogni ansible cosa a cui possa pensare, e manca ancora LOAD e EVAL.

Per MATLAB 2015a e successivi dovresti preferibilmente guardare a matlab.codetools.requiredFilesAndProducts

o doc matlab.codetools.requiredFilesAndProducts

perché depfun è contrassegnato per essere rimosso in una versione futura.