当您在命令窗口中键入Matlab函数名称并打开括号(例如sum(
)时,将打开一个工具提示,显示此函数的所有可能用法。
当我编写自己接受varargin
的函数时,工具提示只显示一个选项,而不是varargin
放置...
(例如myfunc(x,...)
)。
如何向用户建议我的功能的更具体用法?
答案 0 :(得分:1)
我可以在没有编辑语法的情况下将你带到那里'语法'虽然有点泥泞,但它适用于当前的版本。
以下函数为输入提供了一系列必需的,可选的和可选的名称 - 值对。我希望工具提示为用户提供所需和可选输入的信息。即使没有传递变量,varargin也总是存在,并且当传递varargin时,inputParser工作得很好。我将通过在函数调用上保留可选输入来利用这一点,但在我使用它们之前将它们堆叠到varagin中。
工具提示会显示myFun(frequency,gain_optional,phase_optional,...)
function myFun( frequency, gain_optional, phase_optional, varargin )
%% Get mandatory and optional Inputs using inputParser
p = inputParser;
% mandatory inputs
argName = 'frequency';
validation = @(x) validateattributes( x, {'numeric'}, {'2d','positive'} );
p.addRequired( argName, validation );
% optional inputs
% start by packaging all optional inputs into varargin. The two optional
% inputs were kept out of varargin so they will display in the tooltip
if nargin > 2
varargin = [{phase_optional} , varargin];
end
if nargin > 1
varargin = [{gain_optional} , varargin];
end
% add optional inputs into inputParser
argName = 'gainLinear';
default = [];
validation = @(x) validateattributes( x, {'numeric'}, {'2d','positive'} );
p.addOptional( argName, default, validation );
argName = 'phaseDeg';
default = [];
validation = @(x) validateattributes( x, {'numeric'}, {'2d','positive'} );
p.addOptional( argName, default, validation );
% name-value pairs
argName = 'model';
default = [];
validation = @(x) validateattributes( x, {'numeric'}, {'vector','positive'} );
p.addParameter( argName, default, validation );
argName = 'order';
default = [];
validation = @(x) validateattributes( x, {'numeric'}, {'scalar','integer','>',0,'<',3} );
p.addParameter( argName, default, validation );
% pull out all passed data with the inputParser and stash into input struct
p.parse(frequency, varargin{:});
input = p.Results
答案 1 :(得分:0)
如果您知道变量输入的最大数量及其所有名称,那么一种方法就是执行以下操作:
function out = my_func(var1, var2, var3)
if nargin < 1
var1 = default_var1_value;
end
if nargin < 2
var2 = default_var2_value;
end
if nargin < 3
var3 = default_var3_value;
end
end
执行此操作时,Matlab允许您使用0,1,2或3个参数调用my_func
。但工具提示只有一个条目:
my_func(var1, var2, var3)
对我来说,至少看起来好于...
。我不知道如何/它是否可以显示多个工具提示。
编辑:内置函数似乎在某处获得了某种额外的权限。例如,函数rank
附带Matlab并显示两个工具提示。如果您edit rank
,请将代码复制到新文件my_func.m
中,并重命名函数my_func
,它只会获得一个工具提示。所以它不仅仅是顶部注释行的一些特殊格式。