Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

배열 클래스 확인하기

클래스 이름 쿼리하기

배열의 클래스를 확인하려면 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

최하위 파생 클래스 테스트하기

다음과 같은 입력값이 필요한 함수를 정의하는 경우를 살펴보겠습니다.

  • MATLAB® 내장 데이터형

  • MATLAB 내장 데이터형의 서브클래스가 아님

입력 인수에서 내장 데이터형의 서브클래스를 제외하려면 다음 기법을 사용하십시오.

  • 함수에서 허용하는 내장 데이터형의 이름이 포함된 셀형 배열을 정의합니다.

  • MATLAB 제어문에서 특정 유형을 테스트하려면 classstrcmp를 호출합니다.

입력 인수를 테스트합니다.

if strcmp(class(inputArg),'single')
   % Call function
else
   inputArg = single(inputArg);
end

유형 범주 테스트하기

double형 또는 single형이어야 하는 두 개의 숫자형 입력값이 필요한 MEX 함수 myMexFcn을 생성한다고 가정하겠습니다.

outArray = myMexFcn(a,b)

문자형 배열(doublesingle)을 포함하는 셀형 배열을 정의합니다.

floatTypes = {'double','single'};
% Test for proper types
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 함수는 내장 데이터형의 인스턴스에 대해 false를 반환합니다.

% Create a int16 array
a = int16([2,5,7,11]);
isobject(a)
ans =
     0

배열이 내장 정수형 중 하나인지 확인합니다.

if isa(a,'integer') && ~isobject(a)
   % a is a built-in integer type
   ...
end