我可以让你在不编辑适用于当前版本的“语法”的情况下到达那里,尽管有点混乱。
以下函数采用一系列必需、可选和可选名称-值对作为输入。我希望工具提示能够为用户提供有关必需和可选输入的信息。即使没有变量传入,varargin 也始终存在,并且 inputParser 在传递 varargin 时工作得很好。我将利用这一点,将可选输入保留在函数调用上,然后在使用它们之前将它们堆栈到 varagin 中。
工具提示将显示 myFun( 频率, 增益_可选, 相位_可选, ...)
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