我正在使用输入解析器功能,但现在我面临以下问题:
我正在编写一个计算时间序列变化率的对象,即一个输入参数是双精度矩阵(timeSeries
)。第二个输入参数是用于计算变化率(lag
)的时间段。 lag
可以是矢量wherby,将计算不同的变化率。第三个输入向量称为weightVector
。 weightVector
将用于计算所有变化率的平均值,并将相应的权重应用于相应的变化率结果。
现在,我总是喜欢在使用输入解析器时定义一些默认值。我想将weightVector
定义为等权加权向量。但是,默认weightVector
的长度取决于lag
的长度。例如,如果lag = [1,2,3]
,则weightVector
应该等于[1/3, 1/3, 1/3]
。我怎么能编码这样的情况?我当前的构造函数代码如下所示:
function obj = roc(timeSeries, varargin)
%% Input parser
% 1. Create input parser instance
p = inputParser;
% 2. Default values for input arguments
default_lag = 1;
default_weightVector = 1/length(lag); % This line is causing
% problems as LAG isn't
% defined, yet.
% 3. Validation of input arguments
valid_lag = {'vector', 'nonempty', 'integer', 'positive'};
check_lag = @(x) validateattributes(x, {'numeric'}, valid_lag);
valid_weightVector = {'vector', 'nonempty'};
check_weightVector = @(x) validateattributes(x, {'numeric'}, ...
valid_weightVector);
% 4. Add input arguments to input scheme
p.addRequired('timeSeries');
p.addParamater('lag', default_lag, check_lag);
p.addParameter('weightVector', default_weightVector, check_weightVector);
% 5. Parse input arguments
parse(p, timeSeries, varargin{:});
% 6. Assign results to variables
lag = p.Results.lag;
weightVector = p.Results.weightVector;
%% Main code
end % Constructor
答案 0 :(得分:0)
kapt 'com.android.databinding:compiler:2.0.0-beta6'