原始答案(Matlab 版本 R2014b、R2015a)
虽然文档没有说明,help
这些 Matlab 版本中的函数支持零个、一个或两个输出参数。你可以检查这个打字open help
并查看函数签名:
function [out, docTopic] = help(varargin)
在本质上,help
内部工作原理如下:
-
它创建一个名为的对象process
, 类helpUtils.helpProcess
,通过将类构造函数调用为:
process = helpUtils.helpProcess(nargout, nargin, varargin);
where nargout
, argin
and varargin
是那些与help
被称为。
它运行该方法process.getHelpText
,它调用未记录的内置函数helpfunc
,结果设置了属性process.helpStr
。该属性包含命令窗口中显示的帮助字符串。
事实证明,至少在 Windows 上,取决于的值nargout
(它被传递给构造函数helpUtils.helpProcess
) 生成的帮助字符串将为 FP 或 SH。也就是说,如果nargout>0
, 和 SH 如果nargout==0
。您可以通过键入以下代码(改编自help.m
)直接在命令窗口中:
process = helpUtils.helpProcess(1, 1, {'bsxfun'});
process.getHelpText
process.helpStr
这将产生 FP 帮助。另一方面,改变第一个1
(对应于nargout
在实际通话中)变成0
,
process = helpUtils.helpProcess(0, 1, {'bsxfun'});
process.getHelpText
process.helpStr
将产生SH帮助。
我不知道为什么会这样,也就是说,它在比这更深的层面上是如何运作的。我所知道的是getHelp
方法调用未记录的helpfunc
,至少参与生成 FP 帮助。
So, 要获得 FP 帮助,您需要致电help
有一个或两个输出参数。例如,
str = help('foo')
将 FP 帮助文本分配给变量str
并显示它。或者你可以使用
disp(help('foo'))
这也有调用的效果help
带有(隐式)输出参数。
要通过标准命令获得此行为help foo
,你可以定义一个help
功能为覆盖Matlab的help
,并将其放入您的 Matlab 文档文件夹中。该文件夹通常首先出现在路径中(或者您可以通过编辑来确保它出现)startup.m
),因此具有优先权。新函数本质上会调用 Matlab 的help
带有一个输出参数,然后显示生成的 (FP) 帮助文本。为了调用覆盖函数,需要临时更改到其文件夹:
function help(varargin)
if isempty(varargin)
varargin = {'help'}; %// `help` should be equivalent to `help help`
end
d = pwd; %// take note of current folder
cd(fullfile(matlabroot, 'toolbox', 'matlab', 'helptools')) %// folder where the
%// standard `help` function is
disp(help(varargin{1}));
cd(d) %// restore folder
所以现在,最后,help foo
生成旧式 (FP) 帮助。
编辑 Matlab 版本 R2015b
在 Matlab R2015b 中,行为似乎有所改善。打字help foo
不再产生 SH 帮助。它也不完全是 FP。事实上它比这更好:它生成 FH 帮助,但在命令窗口中,而不是在浏览器中。或者,等效地,它生成 FP 帮助,但带有链接和更好的格式。
所以不需要再调整了!
编辑 Matlab 版本 R2018a
Matlab R2018a再次为SH提供帮助。此答案中提供的解决方案有效(即产生 FP 帮助)。
所以回到调整!