答案 0 :(得分:9)
为此,我们可以使用package metadata:
pkgs = meta.package.getAllPackages();
% Or if the specific package name is known:
mp = meta.package.fromName('matlab')
在第1个 st 情况下返回的单元格数组pkgs
包含如下对象:
package with properties:
Name: 'Sldv'
Description: ''
DetailedDescription: ''
ClassList: [29×1 meta.class]
FunctionList: [8×1 meta.method]
PackageList: [9×1 meta.package]
ContainingPackage: [0×0 meta.package]
因此,剩下要做的就是遍历软件包和子软件包并收集其FunctionList
条目。
除了通过解析function list doc page,例如使用Python API和BeautifulSoup
之外,我不确定如何获取属于“默认”名称空间的函数: / p>
fl = arrayfun(@(x)string(x{1}.string.char), py.bs4.BeautifulSoup( ...
fileread(fullfile(docroot,'matlab','functionlist-alpha.html')), ...
'html.parser').find_all("code")).';
答案 1 :(得分:7)
进一步Dev-iL's answer解析function list documentation web page非常容易,因为Web开发人员(当前)已经使用了有用的“函数”类来标记每个函数名称! HTML中的每个函数如下所示:
<code class="function">accumarray</code>
因此我们可以使用urlread
来获取源代码,并使用正则表达式去除每个"function"
类项目的内部文本:
str = urlread('https://mathworks.com/help/matlab/functionlist-alpha.html');
funcs = regexp( str, '(?<="function">)[0-9A-Za-z.]+', 'match' );
注意:URL中的“字母”是“字母”,而不是表示早期测试!
funcs
是具有该页面上所有函数名称的单元格数组。
上面使用的页面适用于最新的MATLAB版本。对于特定版本,请使用结构如下的历史文档页面:
https://mathworks.com/help/releases/R2017b/matlab/functionlist.html