我正在尝试编写一个函数,该函数可以返回一个函数,该函数调整输入值是否在数组中。这是代码:
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))
有人能找到什么吗?
答案 0 :(得分:6)
执行ge
操作时调用函数>=
。该错误试图告诉您不允许使用单元格数组作为第一个操作数执行>=
操作。
作为Marc already mentions,这个问题源于你使用varargin
访问你的()
数组 - 这是一个单元数组 - 这使得结果也是一个单元格数组
相反,使用{}
,因为这将从单元格数组中挑选内容并具有正确的数据类型。
答案 1 :(得分:2)
尝试使用大括号索引varargin,它是一个单元格数组:arr = varargin{k};
。