이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

validateattributes

배열의 유효성 검사

설명

예제

validateattributes(A,classes,attributes)는 배열 A가 지정된 클래스(또는 그 서브클래스) 중 적어도 하나에 속하고 지정된 특성을 모두 가지는지 검사합니다. A가 조건을 충족하지 않으면 MATLAB®에서 오류가 발생하고 서식이 지정된 오류 메시지가 표시됩니다. 그렇지 않으면, validateattributes는 출력값을 표시하지 않고 완료됩니다.

예제

validateattributes(A,classes,attributes,argIndex)는 함수 인수 목록에 있는 입력값의 위치를 생성된 오류 메시지의 일부로 포함합니다.

예제

validateattributes(A,classes,attributes,funcName)은 지정된 함수 이름을 생성된 오류 ID에 포함합니다.

예제

validateattributes(A,classes,attributes,funcName,varName)은 지정된 변수 이름을 생성된 오류 메시지에 포함합니다.

예제

validateattributes(A,classes,attributes,funcName,varName,argIndex)는 지정된 정보를 생성된 오류 메시지 또는 ID에 포함합니다.

예제

모두 축소

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)과 동일하게 설정하면 열이 더 이상 순증가(Strictly Increasing)하지 않으므로, 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가 함수에 대한 두 번째 입력 인수인 것으로 가정하여, 이 값이 음이 아닌지 확인합니다.

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를 사용하여 입력 파라미터를 검사하는 사용자 지정 함수를 만들고, validateattributesaddRequired 메서드와 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

숫자형이 아닌 세 번째 입력값을 사용하여 함수를 호출합니다.

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)

함수 이름은 오류 ID의 일부가 됩니다.

MException.last.identifier
ans =

MATLAB:findVolume:invalidType

입력 인수

모두 축소

입력값으로, 임의 유형의 배열로 지정됩니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | struct | cell | function_handle
복소수 지원 여부:

유효한 데이터형으로, 문자형 벡터로 구성된 셀형 배열 또는 string형 벡터로 지정됩니다. classes의 각 요소는 다음을 포함하여 내장 클래스 또는 사용자 지정 클래스의 이름일 수 있습니다.

'single'단정밀도 숫자
'double'배정밀도 숫자
'int8'부호 있는 8비트 정수
'int16'부호 있는 16비트 정수
'int32'부호 있는 32비트 정수
'int64'부호 있는 64비트 정수
'uint8'부호 없는 8비트 정수
'uint16'부호 없는 16비트 정수
'uint32'부호 없는 32비트 정수
'uint64'부호 없는 64비트 정수
'logical'논리값 1(true) 또는 0(false)
'char'문자
'string'string형 배열
'struct'구조체형 배열
'cell'셀형 배열
'table'테이블
'function_handle'함수 핸들
'numeric'isa(A,'numeric') 함수가 true를 반환하는 모든 데이터형(int8형, int16형, int32형, int64형, uint8형, uint16형, uint32형, uint64형, single형 또는 double형 포함)
'<class_name>'기타 클래스 이름

데이터형: cell | string

유효한 특성으로, 셀형 배열로 지정됩니다.

일부 특성에는 A의 요소의 크기나 개수를 지정하는 숫자형 특성 값이 필요합니다. 이러한 특성에서 숫자형 값 또는 벡터는 셀형 배열에서 특성 이름의 바로 뒤에 와야 합니다.

다음 특성은 배열 A의 크기와 형태를 설명합니다.

'2d'2차원 배열(스칼라, 벡터, 행렬, 빈 배열 포함)
'3d'3차원 이하인 배열
'column'열 벡터, Nx1
'row'행 벡터, 1xN
'scalar'스칼라 값, 1x1
'scalartext'0개 문자가 있는 입력값을 포함하여 string형 스칼라 또는 문자형 벡터
'vector'행 벡터나 열 벡터, 또는 스칼라 값
'size', [d1,...,dN]차원이 d1x...xdN인 배열. 특정 차원의 확인을 건너뛰려면 [3,4,NaN,2] 같이 해당 차원에 NaN을 지정하십시오.
'numel', NN개의 요소가 있는 배열
'ncols', NN개의 열이 있는 배열
'nrows', NN개의 행이 있는 배열
'ndims', NN차원 배열
'square'정사각 행렬. 즉, 행과 열의 개수가 동일한 2차원 배열
'diag'대각 행렬
'nonempty'0인 차원이 없음
'nonsparse'배열이 희소가 아님

다음 특성은 A의 값에 대해 유효한 범위를 지정합니다.

'>', NN보다 큰 모든 값
'>=', NN보다 크거나 같은 모든 값
'<', NN보다 작은 모든 값
'<=', NN보다 작거나 같은 모든 값
'finite'모든 값이 유한함
'nonnan'NaN(숫자가 아님) 값이 없음

다음 특성은 숫자형 배열 또는 논리형 배열 A의 값의 유형을 확인합니다.

'binary'1과 0으로 구성된 배열
'even'짝수로 구성된 배열(0 포함)
'odd'홀수로 구성된 배열
'integer'정수 값으로 구성된 배열
'real'실수 값으로 구성된 배열
'nonnegative'0보다 작은 요소가 없음
'nonzero'0과 같은 요소가 없음
'positive'0보다 작거나 같은 요소가 없음
'decreasing'열의 각 요소가 이전 요소보다 작으며 NaN인 요소가 없습니다.
'increasing'열의 각 요소가 이전 요소보다 크며 NaN인 요소가 없습니다.
'nondecreasing'열의 각 요소가 이전 요소보다 크거나 같으며 NaN인 요소가 없습니다.
'nonincreasing'열의 각 요소가 이전 요소보다 작거나 같으며 NaN인 요소가 없습니다.

데이터형: cell

유효성 검사를 위한 함수의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 빈 문자형 벡터 ''이나 <missing> 문자열을 지정하면 validateattributes 함수가 funcName 입력값을 무시합니다.

데이터형: char | string

입력 변수의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 빈 문자형 벡터 ''이나 <missing> 문자열을 지정하면 validateattributes 함수가 varName 입력값을 무시합니다.

데이터형: char | string

입력 인수의 위치로, 양의 정수로 지정됩니다.

데이터형: double

확장 기능

R2007b에 개발됨