Como posso gerar uma lista de dependências de função no MATLAB?
-
01-07-2019 - |
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.
Solução
Para versões mais recentes do Matlab (por exemplo, 2007 ou 2008) você pode usar o construída em funções:
- mlint
- relatório dependência e
- 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):
- depfun
- 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.