배열 클래스 확인하기
클래스 이름 쿼리하기
배열의 클래스를 확인하려면 class
함수를 사용합니다.
a = [2,5,7,11]; class(a)
ans = double
str = 'Character array';
class(str)
ans = char
배열 클래스 테스트하기
isa
함수를 사용하면 특정 클래스나 숫자형 클래스(numeric
, float
, integer
)의 범주에 해당하는지 테스트할 수 있습니다.
a = [2,5,7,11];
isa(a,'double')
ans = 1
부동소수점 값(단정밀도 값 및 배정밀도 값):
isa(a,'float')
ans = 1
숫자형 값(부동소수점 값 및 정수 값):
isa(a,'numeric')
ans = 1
isa를 사용하여 서브클래스에 대해 True 반환하기
isa
는 지정된 클래스에서 파생된 클래스에 대해 true를 반환합니다. 예를 들어, SubInt
클래스가 내장 데이터형 int16
에서 파생된다고 가정하겠습니다.
classdef SubInt < int16 methods function obj = SubInt(data) if nargin == 0 data = 0; end obj = obj@int16(data); end end end
정의에 따르면 SubInt
클래스의 인스턴스는 int16
형 클래스의 인스턴스이기도 합니다.
aInt = SubInt;
isa(aInt,'int16')
ans = 1
integer
범주를 사용해도 true
를 반환합니다.
isa(aInt,'integer')
ans = 1
내장 데이터형과 해당 서브클래스를 구별하는 방법에 대한 자세한 내용은 내장 유형의 서브클래스 테스트하기 항목을 참조하십시오.
특정 유형 테스트하기
class
함수는 객체의 최하위 파생 클래스 이름을 반환합니다.
class(aInt)
ans = SubInt
class
함수와 함께 strcmp
함수를 사용하여 객체의 클래스 값을 확인합니다.
a = int16(7);
strcmp(class(a),'int16')
ans = 1
class
함수는 클래스 이름을 char
형 벡터로 반환하므로 상속은 strcmp
가 수행하는 비교 결과에 영향을 주지 않습니다.
aInt = SubInt;
strcmp(class(aInt),'int16')
ans = 0
내장 유형의 서브클래스 테스트하기
isa
함수는 지정된 클래스의 서브클래스에 대해 true를 반환합니다. 입력값은 MATLAB® 내장 유형이어야 하지만 그 서브클래스는 제외하는 함수를 정의하려면 다음 방법 중 하나를 사용하십시오.
특정 유형 테스트하기
strcmp
와 class
를 사용하여 특정 내장 유형에 해당하는지 테스트합니다. 이 조건문은 inputArg
가 single
인지 확인하고, 아닌 경우 inputArg
를 single
로 변환하려고 시도합니다.
if strcmp(class(inputArg),'single') % Call function else inputArg = single(inputArg); end
유형의 범주 테스트하기
두 숫자형 입력값이 double
형이거나 single
형이어야 하는 MEX 함수 myMexFcn
을 생성한다고 가정하겠습니다.
outArray = myMexFcn(a,b)
문자형 배열(double
과 single
)을 포함하는 셀형 배열을 정의합니다.
floatTypes = {'double','single'};
strcmp
와 class
를 사용하여 입력값이 셀형 배열에 지정된 유형에 해당하는지 테스트합니다.
if any(strcmp(class(a),floatTypes)) && ... any(strcmp(class(b),floatTypes)) outArray = myMexFcn(a,b); else % Try to convert inputs to avoid error ... end
isobject
사용하기
isobject
를 사용하여 내장 데이터형인지 내장 데이터형의 서브클래스인지 구별합니다. isobject
함수는 내장 데이터형의 인스턴스에 대해 false
를 반환합니다.
% Create a int16 array
a = int16([2,5,7,11]);
isobject(a)
ans = 0
이 조건문은 arr
이 배열이고 내장 정수형에 해당하는지 여부를 테스트합니다.
if isa(arr,'integer') && ~isobject(arr) % if previous statement is true, arr is a built-in integer type ... end