2013-05-06 85 views
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)) 

有人能找到的東西嗎?

回答

6

執行>=操作時會調用函數ge。該錯誤試圖告訴您,您不允許使用單元陣列作爲第一個操作數執行>=操作。

由於Marc already mentions,這個問題源於你訪問你的varargin數組 - 這是一個單元陣列 - 使用(),這使得結果也是一個單元陣列。

取而代之,使用{},因爲它會從單元格數組中選取內容並且具有正確的數據類型。

+0

謝謝!!!!你幫我出來 – ssj 2013-05-06 15:33:32

+1

@ssj - 請注意,調試者會清楚地說明這一點。這是一個好工具。學會使用它。 – 2013-05-06 18:17:45

2

嘗試使用大括號索引varargin,它是一個單元格數組:arr = varargin{k};

相關問題