0

我正在尝试编写一个函数,该函数可以返回一个函数,该函数可以调整输入值是否在数组中。这是代码:

function in = getArray(varargin)
%varargin must contain some 2D-arrays that define the border of range
%say,[0,1] [100,102]
    narginchk(1,inf);

    function result = isIn(value)
        len = size(varargin);
        for k = 1:len(1)
            arr = varargin(k);
            if (value >= arr(1)) && (value <= arr(2))
                result = 1;
                return;
            else 
                result = 0;
            end
        end
    end
    in = @isIn;
end

太奇怪了,当我通过in = getArray([0,1]);in(10)错误调用它时,如下所示:

??? Undefined function 'ge' for input arguments of type 'cell'.

Error in getArray/isIn (line 10)
            if (value >= arr(1)) && (value <= arr(2))

有人能找到东西吗?

4

2 回答 2

6

ge执行操作时调用该函数>=。该错误试图告诉您不允许将>=元胞数组作为第一个操作数进行操作。

正如Marc 已经提到的那样,这个问题源于您访问varargin数组 - 这是一个单元数组 - using (),这使得结果也是一个单元数组。

相反,使用{}as 这将从元胞数组中挑选内容并具有正确的数据类型。

于 2013-05-06T15:27:07.303 回答
2

尝试使用大括号对 varargin 进行索引,它是一个元胞数组:arr = varargin{k};

于 2013-05-06T15:23:26.353 回答