Matlab / Octave中所有内置符号的列表

时间:2018-04-15 09:08:43

标签: matlab octave

在Mathematica中,可以通过执行命令

获取所有内置函数的名称,例如List
Names["List`*"]

另外

Names["context`*"] 

列出指定上下文中的所有符号。例如。

Names["Global`*"] 

给出所有内置符号的名称(以及用户在全局上下文中定义的符号)。

Matlab / Octave中是否有类似的结构?

2 个答案:

答案 0 :(得分:5)

在Octave中,您可以使用以下功能:

__operators__              : Undocumented
__keywords__               : Undocumented
__builtins__               : Undocumented
__list_functions__         : Return a list of all functions (.m and .oct functions) in the load path or in the specified directory.
localfunctions             : Return a list of all local functions, i.e., subfunctions, within the current file.

未记录的函数__dump_symtab_info__,它转储包含不同范围内的函数和变量名的符号表:

__dump_symtab_info__ (scope)               : Dump symbol table of the given scope
__dump_symtab_info__ (__current_scope__)   : Dump symbol table of the current scope
__dump_symtab_info__ ("functions")         : Dump globally visible functions from symbol table
__dump_symtab_info__ ("scopes")            : List available scopes
__dump_symtab_info__ ()                    : Everything

答案 1 :(得分:4)

据我所知,在MATLAB中没有相当于Octave的__list_functions__。但是建立一个很容易:

% Generate a list of all directories searched by MATLAB:
pathlist = strsplit(path,pathsep);
% Get functions and classes on search path
functions = {};
classes = {};
for p = pathlist
   w = what(p{1});
   functions = [functions; ...
                erase(w.m,'.m'); ...           % M-files
                erase(w.mex,['.',mexext]); ... % MEX-files
                erase(w.p,'.p')];              % and P-files are all functions
   classes = [classes; w.classes];             % here are all classes 
   % TODO: w.packages gives package directory names, examine those too!
end
% Remove duplicates
functions = unique(functions);
classes = unique(classes);

以上跳过函数包中定义的函数(这些函数称为package.function,包文件以+字符开头。执行what('package')将提供更多函数和类名称以添加到列表中。

请注意,这并不限制内置函数,如问题所示。它列出了搜索路径上的所有功能。要限制内置函数,请仅搜索toolbox/matlab中的目录。

我不知道列出运算符和关键字的任何方法,但这是一个很容易硬编码的简短列表。 MATLAB有一个函数iskeyword,可以告诉你给定的名字是否是关键字的名称。此函数的来源(type iskeywordedit iskeyword)包含此列表。

Here are all operators

相关,函数inmem列出了当前加载的所有函数。这些是自MATLAB启动以来或自上次调用clear functionsclear all以来实际使用的函数。请注意,函数可以将自己锁定在内存中,而不是使用clear functions清除。