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は、セル配列である配列に を使用してアクセス()し、結果もセル配列にするという事実から生じます。

代わりに、{}これを使用すると、セル配列から内容が選択され、正しいデータ型になります。

于 2013-05-06T15:27:07.303 に答える
2

中かっこを使用して varargin のインデックスを作成してみてください。これは cell 配列です: arr = varargin{k};.

于 2013-05-06T15:23:26.353 に答える