MATLAB에서 변수 유형을 얻는 방법은 무엇입니까?


188

MATLAB에 변수 유형을 나타내는 함수 / 연산자가 typeof있습니까 (자바 스크립트 의 연산자 와 유사 )?

답변:


231

class기능 사용

>> b = 2
b =
     2
>> a = 'Hi'
a =
Hi
>> class(b)
ans =
double
>> class(a)
ans =
char

조건부 :if ( string(class(b)) == 'double' ) fprintf(1, 'b is double'); end
khaverim

70

class() 기능은 typeof()

isa()변수가 특정 유형인지 확인하는 데 사용할 수도 있습니다 . 당신이 더 많은 특정을하고 싶다면, 당신이 사용할 수있는 ischar(), isfloat(), iscell(), 등


44

다른 관련 기능은 whos입니다. 주어진 작업 공간의 변수에 대한 모든 종류의 정보 (치수, 바이트 크기, 유형)를 나열합니다.

>> a = [0 0 7];
>> whos a
  Name      Size            Bytes  Class     Attributes

  a         1x3                24  double              

>> b = 'James Bond';
>> whos b
  Name      Size            Bytes  Class    Attributes

  b         1x10               20  char 

1
WHO의 기능은 변수의 크기를 나열하지 않습니다. 이로 인해 작업 공간이 붐비면 훨씬 빠릅니다.
JaBe

27

isa기능을 사용할 때주의하십시오 . 객체가 지정된 유형 이거나 하위 클래스 중 하나 인 경우에 해당됩니다. 객체와 구체적으로 하위 클래스가 아닌 해당 유형인지 테스트 strcmp하려면 class함수 와 함께 사용해야 합니다 .


5

아무도 언급하지 않았기 때문에 MATLAB metaclass에는 전달 된 엔터티에 대한 다양한 정보를 가진 객체를 반환하는 함수 도 있습니다 . 이 meta.class객체들은 상속 테스트 (공통 비교 연산자를 통해)에 유용 할 수 있습니다.

예를 들면 다음과 같습니다.

>> metaclass(magic(1))

ans = 

  class with properties:

                     Name: 'double'
              Description: ''
      DetailedDescription: ''
                   Hidden: 0
                   Sealed: 0
                 Abstract: 0
              Enumeration: 0
          ConstructOnLoad: 0
         HandleCompatible: 0
          InferiorClasses: {0×1 cell}
        ContainingPackage: [0×0 meta.package]
     RestrictsSubclassing: 0
             PropertyList: [0×1 meta.property]
               MethodList: [272×1 meta.method]
                EventList: [0×1 meta.event]
    EnumerationMemberList: [0×1 meta.EnumeratedValue]
           SuperclassList: [0×1 meta.class]

>> ?containers.Map <= ?handle

ans =

  logical

   1

우리는 의 결과 필드 class(someObj)와 같은 것을 볼 수 있습니다 .Namemetaclass(someObj)


0

MATLAB-변수 유형 확인

class () 는 Javascript의 typeof 연산자 와 정확하게 작동합니다 .

변수에 대한 자세한 내용을 얻으려면 whos 명령 또는 whos () 함수를 사용할 수 있습니다 .

다음은 MATLAB R2017a 의 명령 창 에서 실행 된 예제 코드 입니다.

>> % Define a number
>> num = 67

num =

    67

>> % Get type of variable num
>> class(num)

ans =

    'double'

>> % Define character vector
>> myName = 'Rishikesh Agrawani'

myName =

    'Rishikesh Agrwani'

>> % Check type of myName
>> class(myName)

ans =

    'char'

>> % Define a cell array
>> cellArr = {'This ', 'is ', 'a ', 'big chance to learn ', 'MATLAB.'}; % Cell array
>> 
>> class(cellArr)

ans =

    'cell'

>> % Get more details including type
>> whos num
  Name      Size            Bytes  Class     Attributes

  num       1x1                 8  double              

>> whos myName
  Name        Size            Bytes  Class    Attributes

  myName      1x17               34  char               

>> whos cellArr
  Name         Size            Bytes  Class    Attributes

  cellArr      1x5               634  cell               

>> % Another way to use whos i.e using whos(char_vector)
>> whos('cellArr')
  Name         Size            Bytes  Class    Attributes

  cellArr      1x5               634  cell               

>> whos('num')
  Name      Size            Bytes  Class     Attributes

  num       1x1                 8  double              

>> whos('myName')
  Name        Size            Bytes  Class    Attributes

  myName      1x17               34  char               

>> 

3
현재 승인 된 답변에는 아무 것도 추가되지 않습니다.
rayryeng
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.