Pergunta

A fim de distribuir uma função que eu escrevi que depende de outras funções que eu escrevi que têm suas próprias dependências e assim por diante sem distribuir cada arquivo-m que eu já escrevi, eu preciso descobrir o que a lista completa de dependências é para uma dada m-arquivo. Existe uma maneira built-in / livremente para download para fazer isso?

Especificamente Estou interessado em soluções para MATLAB 7.4.0 (R2007a), mas se há uma maneira diferente de fazê-lo em versões mais antigas, por todos os meios agradar adicioná-los aqui.

Foi útil?

Solução

Para versões mais recentes do Matlab (por exemplo, 2007 ou 2008) você pode usar o construída em funções:

  1. mlint
  2. relatório dependência e
  3. relatório de cobertura

Outra opção é usar o profiler do Matlab. O comando é o perfil, ele também pode ser usado para rastrear dependências. Para o perfil de uso, você poderia fazer

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

Se profiler não está disponível, então talvez as duas funções seguintes são (para 2015a pré-MATLAB):

  1. depfun
  2. depdir

Por exemplo,

>> deps = depfun('foo');

dá uma estrutura, dependências, que contém todas as dependências do foo.m.

A partir respostas 2 , e 3 , versões mais recentes do MATLAB (2015a post) uso matlab.codetools.requiredFilesAndProducts vez.

Veja as respostas

EDIT:

Advertências graças aos comentários @ Mike Katz

  • Lembre-se que o Profiler só vai mostrar-lhe os arquivos que foram realmente utilizados nessas corridas, por isso, se você não ir através de cada ramo, você pode ter dependências adicionais. o relatório de dependência é uma boa ferramenta, mas apenas resolve dependências estáticas o caminho e apenas para os arquivos em uma único diretório.

  • Depfun é mais confiável, mas dá-lhe cada coisa possível que pode pensar, e ainda falta LOAD e EVAL do.

Outras dicas

Para MATLAB 2015a e mais tarde você deve preferencialmente olhar matlab.codetools .requiredFilesAndProducts

ou doc matlab.codetools.requiredFilesAndProducts

porque depfun está marcado para ser removido em uma versão futura.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top