2014-10-02 42 views
2

在MATLAB中使用%#符号,你可以声明函数依赖有:宣告依赖

%#function myExtraFunctionName 

这么做告诉MATLAB是myExtraFunctionName是由脚本要求或函数来操作,即使它被称为一个eval声明或其他一些方法,各种依赖性检查器或编译器无法弄清楚。

我有几个加载脚本运行所需的.mat文件或其他数据文件的文件,我想以类似的方式包含它们,以便当我运行依赖项检查(如fList = matlab.codetools.requiredFilesAndProducts)时,它也会找到这些数据文件。最终,我希望能够做的是生成文件列表并将其传递到zip以存档运行给定脚本或函数(包括数据文件)所需的每个文件。

试图找到关于此功能的任何文档都具有挑战性,因为MATLAB帮助不会让您只输入%#并搜索%#function只是搜索function。 Google做同样的事情:“散列百分比函数”返回大量关于散列表的信息,“%#function matlab”去掉重要的字符,并且“声明matlab函数”“声明matlab函数相关性”变得毫无用处。我不记得我在哪里遇到这种语法,所以我甚至不知道这是否是一个记录的功能。

我有两个问题:

  • 有人能指出我的文档此语法的一些线索一起,我应该使用搜索关键字是什么?

  • 这可以用来声明除m文件以外的依赖关系,如果不是,我该怎么做呢?

回答

3

%#function是一个杂注指令,通知MATLAB Compiler指定的函数将使用feval,eval等间接调用。

这很重要,因为静态代码分析器将无法自行检测到这种依赖关系。例如,该功能的名称可以存储在一个字符串,如:

fcn = 'myFunction'; 
feval(fcn) 

据我所知,这只是使用MATLAB的编译器,没有别的。

还有other类似的编译指示。例如MATLAB编码器有%#codegen编译器指令。

+0

所以'pragma'就是我正在寻找的词,当然%#函数是在文档中搜索“编译指示”时显示的页面的标题。依赖检查器也使用pragma,这是我如何重新发现它作为将折旧函数插入到依赖列表中的残余代码的残余部分。关于如何强制依赖检查器包含非m文件的问题的第二部分的任何想法? – craigim 2014-10-02 18:16:08

+0

还有一些其他问题关于MATLAB关于MATLAB函数[依赖关系](http://stackoverflow.com/questions/tagged/matlab+dependencies)和[代码分析](http://stackoverflow.com/questions/标签/ matlab +代码分析),为您的问题提供可能的解决方案。 – Amro 2014-10-02 18:19:39

+0

我以前读过他们中的大多数。我不记得有关辅助文件的任何信息,但我会再看一遍。 – craigim 2014-10-02 18:28:08

0

我没有任何答案,但也许你可以使用这个网站: http://www.symbolhound.com/

它让你用符号搜索。

+0

很高兴知道,但唉,没有骰子。搜索产生了4个stackoverflow问题,其中只有两个实际上在任何地方都有字符串“%#function”,其中没有任何关于语法的内容。 – craigim 2014-10-02 17:45:39

+1

@craigim:小心许多人(包括我自己)在堆栈溢出中使用'%#'或'%//'符号来正确突出显示注释(我们[仍在等待](http://meta.stackexchange)。 com/a/137865/135945),以使MATLAB代码在SO上正确呈现)。这与实际的杂注没有任何关系! – Amro 2014-10-02 18:09:26