Я могу получить вас там без редактирования «Синтаксиса», который работает в текущих выпусках, хотя и немного мутно.
Следующая функция принимает диапазон обязательных, необязательных и необязательных пар имя-значение для входных данных.Я хочу, чтобы подсказка давала пользователю информацию о необходимых и необязательных входах.varargin всегда существует, даже если в него не передаются переменные, и inputParser работает очень хорошо при передаче varargin.Я собираюсь воспользоваться этим, оставив свои необязательные входные данные для вызова функции, но затем сложу их в varagin, прежде чем я когда-либо с ними буду работать. * Подсказка инструмента
отобразит myFun (quency, 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