วิธีรับชนิดของตัวแปรใน MATLAB?


188

MATLAB มีฟังก์ชัน / โอเปอเรเตอร์ที่ระบุประเภทของตัวแปร (คล้ายกับtypeofโอเปอเรเตอร์ใน JavaScript) หรือไม่?

คำตอบ:


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 ()ทำงานเหมือนกับตัวดำเนินการtypeofของ Javascript

เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับตัวแปรที่คุณสามารถใช้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.