このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
validateattributes
配列の有効性をチェック
構文
説明
validateattributes(
は、配列 A
,classes
,attributes
)A
が少なくとも 1 つの指定されたクラス (またはサブクラス) に属しており、指定されたすべての属性をもっていることを検証します。A
が条件を満たさない場合、MATLAB® はエラーをスローして形式化されたエラー メッセージを表示します。それ以外の場合、validateattributes
はどのような出力も表示せずに完了します。
validateattributes(
は、生成されるエラー メッセージの一部として関数の引数リストに入力の位置を含めます。A
,classes
,attributes
,argIndex
)
validateattributes(
は、生成されるエラー識別子に指定された関数の名前を含めます。A
,classes
,attributes
,funcName
)
例
配列のサイズの検証
classes = {'numeric'}; attributes = {'size',[4,6,2]}; A = rand(3,5,2); validateattributes(A,classes,attributes)
Expected input to be of size 4x6x2 when it is actually size 3x5x2.
A
は指定された属性と一致しなかったため、MATLAB はエラー メッセージをスローします。
配列の単調性の検証
配列が増加している、または減少していないかどうかを判別します。
A = [1 5 8 2; 9 6 9 4] validateattributes(A, {'double'},{'nondecreasing'}) validateattributes(A, {'double'},{'increasing'})
A = 1 5 8 2 9 6 9 4
A
は増加していてかつ減少していないため、validateattributes
ではいずれの属性チェックでもエラーはスローされません。
A(2,3)
を A(1,3)
に等しく設定すると、厳密に増加していない列が生成されるため、validateattributes
はエラーをスローします。
A(2,3) = 8 validateattributes(A, {'double'},{'increasing'})
A = 1 5 8 2 9 6 8 4 Expected input to be strictly increasing.
ただし、各列要素は前の列要素以上であるため、列は減少しないままです。次のコードではエラーはスローされません。
validateattributes(A, {'double'},{'nondecreasing'})
複素数の属性の確認
a
が関数の 2 番目の入力引数であると仮定し、非負であることを確認します。
a = complex(1,1); validateattributes(a,{'numeric'},{'nonnegative'},2)
Expected input number 2 to be nonnegative.
複素数の複素平面には適切に定義された順序がないため、validateattributes
はこれを正とも負とも認識しません。
配列の値が指定された範囲内にあることの確認
配列の値が 0 と 10 の間の 8 ビット整数であることをチェックします。
このコードは Rankings
という関数内にあると仮定します。
classes = {'uint8','int8'}; attributes = {'>',0,'<',10}; funcName = 'Rankings'; A = int8(magic(4)); validateattributes(A,classes,attributes,funcName)
Error using Rankings Expected input to be an array with all of the values < 10.
inputParser
を使用した関数入力パラメーターの検証
inputParser
で入力パラメーターを確認するカスタム関数を作成し、validateattributes
を addRequired
メソッドと addOptional
メソッドの検証関数として使用します。
関数を定義します。
function a = findArea(shape,dim1,varargin) p = inputParser; charchk = {'char'}; numchk = {'numeric'}; nempty = {'nonempty'}; addRequired(p,'shape',@(x)validateattributes(x,charchk,nempty)) addRequired(p,'dim1',@(x)validateattributes(x,numchk,nempty)) addOptional(p,'dim2',1,@(x)validateattributes(x,numchk,nempty)) parse(p,shape,dim1,varargin{:}) switch shape case 'circle' a = pi * dim1.^2; case 'rectangle' a = dim1 .* p.Results.dim2; end end
数値以外の 3 番目の入力を使用して関数を呼び出します。
myarea = findArea('rectangle',3,'x')
Error using findArea (line 10) The value of 'dim2' is invalid. Expected input to be one of these types: double, single, uint8, uint16, uint32, uint64, int8, int16, int32, int64
関数の引数の検証
関数の入力を確認し、生成されたエラーに入力名と位置についての情報を含めます。
関数を定義します。
function v = findVolume(shape,ht,wd,ln) validateattributes(shape,{'char'},{'nonempty'},mfilename,'Shape',1) validateattributes(ht,{'numeric'},{'nonempty'},mfilename,'Height',2) validateattributes(wd,{'numeric'},{'nonempty'},mfilename,'Width',3) validateattributes(ln,{'numeric'},{'nonempty'},mfilename,'Length',4)
入力引数 shape
を含めずに関数を呼び出します。
vol = findVolume(10,7,4)
Error using findVolume Expected input number 1, Shape, to be one of these types: char Instead its type was double. Error in findVolume (line 2) validateattributes(shape,{'char'},{'nonempty'},mfilename,'Shape',1)
関数名がエラー識別子の一部になります。
MException.last.identifier
ans = MATLAB:findVolume:invalidType
入力引数
A
— 入力
任意の配列タイプ
任意の配列タイプとして指定される入力。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| char
| string
| struct
| cell
| function_handle
複素数のサポート: あり
classes
— 有効なデータ型
文字ベクトル | 文字ベクトルの cell 配列 | string 配列
有効なデータ型。文字ベクトル、文字ベクトルの cell 配列、または string 配列として指定します。classes
の各要素は、以下を含む組み込みクラスまたはカスタム クラスの名前です。
'half' | 半精度数 |
'single' | 単精度数 |
'double' | 倍精度数 |
'int8' | 符号付き 8 ビット整数 |
'int16' | 符号付き 16 ビット整数 |
'int32' | 符号付き 32 ビット整数 |
'int64' | 符号付き 64 ビット整数 |
'uint8' | 符号なしの 8 ビット整数 |
'uint16' | 符号なしの 16 ビット整数 |
'uint32' | 符号なしの 32 ビット整数 |
'uint64' | 符号なしの 64 ビット整数 |
'logical' | logical 1 (true ) または 0 (false ) |
'char' | 文字 |
'string' | string 配列 |
'struct' | 構造体配列 |
'cell' | cell 配列 |
'table' | table |
'timetable' | timetable |
'function_handle' | 関数ハンドル |
'numeric' | int8 、int16 、int32 、int64 、uint8 、uint16 、uint32 、uint64 、single 、double など、関数 isa(A,'numeric') が true を返すすべてのデータ型 |
'< | その他のクラス名 |
データ型: cell
| string
attributes
— 有効な属性
cell 配列 | string 配列
有効な属性。cell 配列または string 配列として指定します。
A
の要素のサイズや数を指定する属性など、一部の属性では数値も必要になります。そのような属性の場合、数値またはベクトルは cell 配列の属性名の直後になければなりません。string 配列を使用して attributes
の数値を表すことはできません。
配列 A
のサイズおよび形状を記述する属性は次のとおりです。
'2d' | スカラー、ベクトル、行列および空の配列を含む 2 次元の配列 |
'3d' | 次元が 3 以下の配列 |
'column' | 列ベクトル (N 行 1 列) |
'row' | 行ベクトル (1 行 N 列) |
'scalar' | スカラー値 (1 行 1 列) |
'scalartext' | string スカラーまたは文字ベクトルのいずれか (0 文字の入力を含む) |
'vector' | 行または列ベクトル、あるいはスカラー値 |
'size', [d1,...,dN] | d1 ×...×dN 次元の配列。特定の次元の確認を省略するには、その次元に対して NaN を、[3,4,NaN,2] のように指定します。 |
'numel', N | N 要素の配列 |
'ncols', N | N 列の配列 |
'nrows', N | N 行の配列 |
'ndims', N | N 次元の配列 |
'square' | 正方行列 (行と列の数が等しい 2 次元配列) |
'diag' | 対角行列 |
'nonempty' | 0 に等しい次元なし |
'nonsparse' | スパースでない配列 |
A
の値の有効な範囲を指定する属性は次のとおりです。
'>', N | すべての値が N よりも大きい |
'>=', N | すべての値が N 以上 |
'<', N | すべての値が N よりも小さい |
'<=', N | すべての値が N 以下 |
'finite' | すべての値が有限 |
'nonnan' | どの値も NaN (非数) ではない |
数値配列または logical 配列 A
の値の型を確認する属性は次のとおりです。
'binary' | 1 と 0 の配列 |
'even' | 偶数の整数の配列 (0 を含む) |
'odd' | 奇数の整数の配列 |
'integer' | 整数値の配列 |
'real' | 実数値の配列 |
'nonnegative' | 0 より小さい要素なし |
'nonzero' | 0 に等しい要素なし |
'positive' | 0 以下の要素なし |
'decreasing' | 列の各要素が前の要素より小さく、NaN である要素が存在しない |
'increasing' | 列の各要素が前の要素より大きく、NaN である要素が存在しない |
'nondecreasing' | 列の各要素が前の要素以上で、NaN である要素が存在しない |
'nonincreasing' | 列の各要素が前の要素以下で、NaN である要素が存在しない |
データ型: cell
funcName
— 検証する関数の名前
文字ベクトル | string スカラー
検証する関数の名前。文字ベクトルまたは string スカラーとして指定します。空の文字ベクトル ''
または string の <missing>
を指定した場合、関数 validateattributes
は funcName
の入力を無視します。
データ型: char
| string
varName
— 入力変数の名前
文字ベクトル | string スカラー
入力変数の名前。文字ベクトルまたは string スカラーとして指定します。空の文字ベクトル ''
または string の <missing>
を指定した場合、関数 validateattributes
は varName
の入力を無視します。
データ型: char
| string
argIndex
— 入力引数の位置
正の整数
入力引数の位置。正の整数として指定します。
データ型: double
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
一部のエラー メッセージは MATLAB のエラー メッセージの簡易版になります。
classes
、funcName
、varName
、argIndex
の各引数は定数でなければなりません。属性名は定数でなければなりません。
生成コードのエラー メッセージに含まれる数値の形式は MATLAB の形式と異なる場合があります。たとえば、次のエラー メッセージは MATLAB のものです。
Expected input to be an array with all of the values > 3.
このエラー メッセージは生成コードでは次のようになります。
Expected input to be an array with all of the values > 3.000000000000000e+00.
scalar
とreal
の属性は、半精度データ型でサポートされています。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
この関数は分散配列を完全にサポートしています。詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2007b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)