输入解析器:一个依赖于另一个参数的参数

时间:2016-12-30 15:11:22

标签: matlab

我正在使用输入解析器功能,但现在我面临以下问题:

我正在编写一个计算时间序列变化率的对象,即一个输入参数是双精度矩阵(timeSeries)。第二个输入参数是用于计算变化率(lag)的时间段。 lag可以是矢量wherby,将计算不同的变化率。第三个输入向量称为weightVectorweightVector将用于计算所有变化率的平均值,并将相应的权重应用于相应的变化率结果。

现在,我总是喜欢在使用输入解析器时定义一些默认值。我想将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

1 个答案:

答案 0 :(得分:0)

kapt 'com.android.databinding:compiler:2.0.0-beta6'