Domanda

Per distribuire una funzione che ho scritto che dipende da altre funzioni che ho scritto che hanno le proprie dipendenze e così via senza distribuire ogni m-file che abbia mai scritto, devo capire qual è l'elenco completo delle dipendenze per un dato m-file.Esiste un modo integrato/scaricabile gratuitamente per farlo?

Nello specifico, sono interessato alle soluzioni per MATLAB 7.4.0 (R2007a), ma se esiste un modo diverso per farlo nelle versioni precedenti, aggiungilo sicuramente qui.

È stato utile?

Soluzione

Per le versioni più recenti di Matlab (ad esempio 2007 o 2008) è possibile utilizzare le funzioni integrate:

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

Un'altra opzione è utilizzare il profiler di Matlab.Il comando è profile, può essere utilizzato anche per tenere traccia delle dipendenze.Per utilizzare il profilo, potresti farlo

>> 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, forse lo sono le due funzioni seguenti (per versioni precedenti a MATLAB 2015a):

  1. depfun
  2. dipdir

Per esempio,

>> deps = depfun('foo');

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

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

Vedi le risposte

MODIFICARE:

Avvertenze grazie ai commenti di @Mike Katz

  • Ricorda che il profiler ti mostrerà solo file che sono stati effettivamente utilizzati in quelle corse, quindi se non si passa attraverso ogni ramo, potresti avere ulteriori dipendenze.Il rapporto di dipendenza è un buon strumento, ma risolve solo le dipendenze statiche dal percorso e solo per i file in un'unica directory.

  • Depfun è più affidabile ma ti dà ogni cosa possibile a cui può pensare e manca ancora di carichi e valutazioni.

Altri suggerimenti

Per MATLAB 2015a e più tardi dovresti preferibilmente guardare matlab.codetools.requiredFilesAndProducts

O doc matlab.codetools.requiredFilesAndProducts

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top