使用varargin(...)时如何显示不同的功能用法? [英] How to show different function usages when using varargin (...)?

查看:86
本文介绍了使用varargin(...)时如何显示不同的功能用法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当您输入Matlab函数名称并在命令窗口中打开大括号(例如sum()时,将打开一个工具提示,显示该函数的所有可能用法.

When you type in a Matlab function name and open a brace (e.g. sum() in the command window, a tooltip opens that shows all possible usages of this function.

当我编写自己的接受varargin的函数时,工具提示仅显示一个选项,该选项代替varargin放置...(例如myfunc(x,...)).

When I write my own function that accepts varargin, the tooltip shows just one option, which instead of varargin puts ... (e.g. myfunc(x,...)).

我如何向用户建议我的功能的更具体用法?

How can I suggest more specific usages of my function to the user?

推荐答案

我可以不用编辑适用于当前版本的语法"就可以到达那里,尽管有点泥泞.

I can get you there without editing 'Syntax' that works on current releases, though a little muddy.

以下函数接受一系列必需的,可选的和可选的名称/值对输入.我希望工具提示为用户提供有关必需和可选输入的信息.即使没有将任何变量传递给varargin,它也始终存在,并且在传递varargin时,inputParser可以很好地工作.我将通过在函数调用中保留我的可选输入来利用此优势,但是在我与它们一起使用之前,请将它们堆叠到varagin中.

The below function takes a range of required, optional, and optional name-value pairs for inputs. I want tool tip to give the user information on the required and optional inputs. varargin always exists even if no variables are passed into it, and inputParser works pretty well when handed varargin. I'm going to take advantage of this by leaving my optional inputs on the function call, but then stack them into varagin before I ever work with them.

工具提示将显示myFun(频率,增益可选,相位可选......

tool tip will display 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

这篇关于使用varargin(...)时如何显示不同的功能用法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆