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

ssj*_*ssj 0 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
Run Code Online (Sandbox Code Playgroud)

奇怪的是,当我通过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))
Run Code Online (Sandbox Code Playgroud)

有人能找到什么吗?

glg*_*lgl 6

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

正如Marc已经提到的,这个问题源于你访问你的varargin数组 - 这是一个单元数组 - 使用(),这使得结果也是一个单元数组.

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