Matlab/Octave是否有类似Mathematica的内置符号查询功能?
当然有!Matlab 和 Octave 都提供了类似 Mathematica 中 Names 函数的功能,用来查询特定前缀或上下文/命名空间下的符号、函数,下面分别说明具体用法:
Matlab 中的实现方式
1. 查找特定前缀的内置函数/符号
如果你想找所有以某个前缀(比如 list)开头的内置函数,最直接的方式是用 which 命令搭配通配符,加上 -all 参数可以列出所有匹配项的路径:
which list* -all
如果要筛选工作区中以特定前缀命名的变量,直接用 who 或 whos 加通配符即可:
who list* % 仅列出变量名 whos list* % 列出变量名及详细信息
2. 查询特定上下文/工具箱的符号
Matlab 里的工具箱、自定义包就类似 Mathematica 的「上下文」:
- 要查看某个工具箱下的所有函数,用
what命令,比如查看 Signal Processing Toolbox 的内容:what signal - 对于自定义包(以
+开头的文件夹结构),可以用who命令指定包名来列出包内的符号:
也可以用who myPackage.*dir直接查看包文件夹的内容:dir('+myPackage')
Octave 中的实现方式
Octave 的用法和 Matlab 高度兼容,同时也有一些自己的便捷特性:
1. 查找特定前缀的函数/符号
同样可以用 which 搭配通配符和 -all 参数来匹配前缀:
which list* -all
如果你想获取所有已加载函数的列表并手动筛选,functions 函数可以返回所有函数的元胞数组,再通过字符串匹配过滤:
all_functions = functions(); func_names = {all_functions.name}; list_prefix_funcs = func_names(strncmp(func_names, 'list', 4));
工作区变量的筛选和 Matlab 一致,用 who list* 或 whos list* 即可。
2. 查询特定上下文/包的符号
- 对于内置工具箱或自定义包,
what命令同样适用:what signal - 自定义包的符号查询可以用
who加包名,或者dir查看包文件夹:who myPackage.* dir('+myPackage')
额外小技巧:不管是 Matlab 还是 Octave,你都可以用 help list*(Octave)或 docsearch list*(Matlab)来快速查看匹配前缀的函数帮助文档,非常实用。
内容的提问来源于stack exchange,提问作者Dimitris




