主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

関数の引数の個数の検証

この例では,カスタム関数が受け取っている入出力引数の個数が有効であるかどうかをチェックする方法を示します。MATLAB®では一部の引数のチェックが自動的に行われます。それ以外の場合はnarginchkまたはnargoutchkを使用することができます。

自動引数チェック

関数定義から引数の数を判定できる場合,MATLABではその関数が予想されるより多くの引数を受け取るかどうかをチェックします。たとえば,次の関数は最大で2つの出力と3つの入力を扱います。

函数myFunction (x, y) = (a, b, c)

myFunctionに渡した入力の数が多すぎると,MATLABによりエラーが出されます。このケースをチェックするためにnarginchkを呼び出す必要はありません。

myFunction (X, Y) =(1、2、3、4)
使用myFunction时出错,输入参数太多。

関数の引数の数が以下の条件を満たしているかどうかを確認するには,関数narginchkおよび関数nargoutchkを使用します。

  • 最小限必要な数の引数を受け取っている

  • 関数で变长度输入宗量またはvarargoutが使用される場合,引数の数が最大限を超えていない

narginchkでの入力チェック

testValues.mというファイルに,少なくとも2つの入力を必要とする関数を作成します。最初の入力は,しきい値として他の入力との比較に使用されます。

函数testValues(threshold,varargin) minInputs = 2;maxInputs =正;narginchk (minInputs maxInputs)k = 1:(nargin-1)如果(varargin{k} >阈值)'测试值%d超过%d\n'k阈值);结束结束

必要数に満たない数の入力を指定してtestValuesを呼び出します。

testValues (10)
使用testValues出错(第4行)输入参数不足。

十分な数の入力を指定してtestValuesを呼び出します。

testValues (10, 11111)
试验值2超过10试验值3超过10

nargoutchkでの出力チェック

mysize.mというファイルに関数を定義し,入力配列の次元(関数大小から)ベクトルとして返し,さらにオプションで各次元のサイズに対応するスカラー値を返すようにします。nargoutchkを使用して,要求された個々のサイズの数が,使用できる次元の数を超えていないかどうかを確認します。

函数[size evector,varargout] = mysize(x) minOutputs = 0;maxOutputs = ndims(x) + 1;nargoutchk(minOutputs,maxOutputs) sizeevector = size(x);varargout =细胞(1、nargout-1);k = 1:length(varargout) varargout{k} = sizeevector (k);结束

有効な数の出力を指定してmysizeを呼び出します。

一个=兰德(3、4、2);(实际大小的、nrows ncols npages] = mysize (A)
Fullsize = 3 4 2 nrows = 3 ncols = 4 npages = 2

最大数を超える数の出力を指定してmysizeを呼び出します。

= 1;(实际大小的、nrows ncols npages] = mysize (A)
使用mysize错误(第4行)输出参数太多。

参考

|

関連するトピック