'未定义函数'错误,但我甚至没有使用它

时间:2013-05-06 15:14:16

标签: matlab

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

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))

有人能找到什么吗?

2 个答案:

答案 0 :(得分:6)

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

作为Marc already mentions,这个问题源于你使用varargin访问你的()数组 - 这是一个单元数组 - 这使得结果也是一个单元格数组

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

答案 1 :(得分:2)

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