當您輸入Matlab函數名稱並在命令窗口中打開大括號(例如sum(
)時,會打開一個工具提示,其中顯示該函數的所有可用用法。如何在使用varargin(...)時顯示不同的功能用法?
當我寫我自己的函數接受varargin
,工具提示僅顯示一個選項,而不是varargin
這使...
(例如myfunc(x,...)
)。
我該如何向用戶建議我的功能的更具體的用法?
當您輸入Matlab函數名稱並在命令窗口中打開大括號(例如sum(
)時,會打開一個工具提示,其中顯示該函數的所有可用用法。如何在使用varargin(...)時顯示不同的功能用法?
當我寫我自己的函數接受varargin
,工具提示僅顯示一個選項,而不是varargin
這使...
(例如myfunc(x,...)
)。
我該如何向用戶建議我的功能的更具體的用法?
一種方法,如果你知道的可變投入的最大數量,以及他們的名字的,是做這樣的事情:
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,您可以撥打my_func
與0,1, 2或3個參數。但提示只會有一個條目:
my_func(var1, var2, var3)
這對我來說,至少似乎比...
更好。我不知道如何/如果可以使其顯示多個工具提示。
編輯:似乎內置函數在某處獲得某種額外的特權。例如,函數rank
附帶Matlab並顯示兩個工具提示。如果你edit rank
,將代碼複製到一個新文件my_func.m
,並重命名功能my_func
,它只獲得一個工具提示。所以這不僅僅是頂部註釋行的特殊格式。
問題是,一些變量可以有不同的含義(像大多數建立在函數中的Matlab),然後這將不起作用。 – 2012-02-23 13:29:36
我可以在沒有編輯'Syntax'的情況下讓你在那裏工作在當前版本上,雖然有點渾濁。
下面的函數爲輸入提供了一系列必需的,可選的和可選的名稱 - 值對。我希望工具提示可以向用戶提供有關所需和可選輸入的信息。即使沒有變量傳入它,varargin也會一直存在,並且在遞交varargin時inputParser工作得很好。我將通過在函數調用中留下可選的輸入來利用這一點,但在我使用它們之前將它們疊放到varagin中。
工具提示會顯示myFun(頻率,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
我對你的問題感到困惑。它已經在那裏。這適用於搜索路徑上的任何m文件。 – 2012-02-23 12:35:47
你是對的,我爲了清晰起見編輯了這個問題。 – 2012-02-23 12:56:45
我最近發現一個函數的工具提示可以在MATLAB編輯器中用Ctrl + F1調用。涼! – yuk 2012-02-23 15:10:23